3 回答
TA贡献1878条经验 获得超4个赞
你可以试试这个:
var storeTypesSelected; //array of the types checked
var getStores = stores.filter(function (store) {
return storeTypesSelected.indexOf(store.storeType) > -1;
});
TA贡献1824条经验 获得超6个赞
从选中的复选框中,构建所选值的数组(或集)。然后,在遍历数组时,检查当前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贡献1995条经验 获得超2个赞
您只需要在数组中保存用于过滤的复选框值。
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 函数进行过滤。
添加回答
举报
