3 回答

TA貢獻(xiàn)1878條經(jīng)驗(yàn) 獲得超4個(gè)贊
你可以試試這個(gè):
var storeTypesSelected; //array of the types checked
var getStores = stores.filter(function (store) {
return storeTypesSelected.indexOf(store.storeType) > -1;
});

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
從選中的復(fù)選框中,構(gòu)建所選值的數(shù)組(或集)。然后,在遍歷數(shù)組時(shí),檢查當(dāng)前storeType是否包含在集合中:
var stores = [{
id: 1,
store: 'Store 1',
storeType: "shoes"
},
{
id: 2,
store: 'Store 2',
storeType: "clothes"
},
{
id: 3,
store: 'Store 3',
storeType: "sports"
},
{
id: 4,
store: 'Store 3',
storeType: "shoes"
}
];
document.addEventListener('change', () => {
const checkedValues = [...document.querySelectorAll('.storesCheckBox')]
.filter(input => input.checked)
.map(input => input.value);
const filteredStores = stores.filter(({ storeType }) => checkedValues.includes(storeType));
console.log(filteredStores);
});
Shoes: <input type="checkbox" name="shoes" value="shoes" class="storesCheckBox" />
Clothes: <input type="checkbox" name="clothes" value="clothes" class="storesCheckBox" />
Sports: <input type="checkbox" name="sports" value="sports" class="storesCheckBox" />

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
您只需要在數(shù)組中保存用于過濾的復(fù)選框值。
var elems = document.getElementsByClassName("storesCheckBox");
var list = [];
for(var i=0; elems[i]; ++i){
if(elems[i].checked){
list.push(elems[i].value);
}
}
var getStores = stores.filter(function (store) {
return list.indexOf(store.storeType) >= 0;
});
return 語句將使用 indexOf 函數(shù)進(jìn)行過濾。
添加回答
舉報(bào)