我有一個Javascript數組:如何動態過濾對象?
var peoples = [
{'people':{'sex':'male', 'diet':'vegetarian','favPlaces':['place1','place2']}},
{'people':{'sex':'female', 'diet':'flexitarian','favPlaces':['place2','place3']}},
{'people':{'sex':'male', 'diet':'flexitarian', 'favPlaces':['place4','place1']}}
];
如果我選擇{ '性':[ '女', '男性']} & & { '飲食':[ 'flexitarian']}輸出應該是['place2','place3','place4','place1']。
到我的代碼的問題是,如果我只能選擇「性」它不會顯示的結果,但如果我選擇既是「性」和「飲食」它會顯示結果。 我無法弄清楚如何讓我的代碼具有動態性,這樣當我選擇性別或飲食,性別和飲食時,代碼就會動態過濾,並且會顯示結果。
這是我的代碼:
var filterObj = {'sex': ['female', 'male'], 'diet': ['flexitarian']};
for(var p in peoples){
for(var s in filterObj.sex){
for(var d in filterObj.diet){
if((filterObj.sex[s] == peoples[p].people.sex) && (filterObj.diet[d] == peoples[p].people.diet)){
console.log(peoples[p].people.favPlaces);
}
}
}
這是HTML:
<ul id="sex">
<li><label><input type="checkbox" value="male">Male</label></li>
<li><label><input type="checkbox" value="female">Female</label></li>
</ul>
<ul id="diet">
<li><label><input type="checkbox" value="none">None</label></li>
<li><label><input type="checkbox" value="flexitarian">Flexitarian</label></li>
<li><label><input type="checkbox" value="vegetarian">Vegetarian</label></li>
</ul>
你不需要'新的對象()'那裏,它可以安全刪除。只保留內容。 – SeinopSys 2015-04-04 11:37:51
請看看這個[SO回答](http://stackoverflow.com/questions/28354252/trouble-with-math-in-javascript-when-elements-clicked/28355096#28355096)。我認爲Underscore'filter'方法也適用於你。 – AWolf 2015-04-04 11:49:33
@ DJDavid98,謝謝。 – Gen 2015-04-04 11:57:04