javascript - 根据复选框过滤对象数组
问题描述
您好,我想根据选中的复选框过滤我的数据。
我有 3 个复选框。
<input type="checkbox" name="shoes" value="shoes" class="storesCheckBox" />
<input type="checkbox" name="clothes" value="clothes" class="storesCheckBox" />
<input type="checkbox" name="sports" value="sports" class="storesCheckBox" />
我的商店数据是
// my stores
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',
storeSells: "shoes"
}
]
所以,如果我选中shoes
复选框,我想根据 storeType 过滤数据shoes
。所以我写了
var getStores = stores.filter(function (store) {
return store.storeType === 'shoes';
});
但是现在,如果我检查clothes
并且shoes
已经检查。我想过滤shoes + clothes
数据。如果我取消选中,shoes
我想再次只过滤衣服数据。它可以是任意数量的复选框,具体取决于商店类型。你能帮我解决这个问题吗?
解决方案
你可以试试这个:
var storeTypesSelected; //array of the types checked
var getStores = stores.filter(function (store) {
return storeTypesSelected.indexOf(store.storeType) > -1;
});
推荐阅读
- jquery - 如何检测循环中的最后一个 ajax 调用?
- python - 如何将 spyder 连接到 postgres 数据库?
- c# - Xamarin Forms 升级后无法转换错误
- javascript - application/x-www-form-urlencoded 和 multipart/form-data 是客户端在向服务器发送数据时唯一处理的两种特殊内容类型吗?
- swift - 错误:lipo:尝试运行项目时未指定文件
- sql - ORA-01841:(完整)年份必须介于 -4713 和 +9999 之间,并且不能为 0 提示
- java - 访问 S3 的 Lambda 策略
- javascript - vuejs 问题图查找过滤器 foreach 等 .. 社交网络评论如何将 user.id 与 comment.user_id mysql 数据库链接
- python - Python中列表访问的时间复杂度是多少?
- git - Git:同一存储库的两个本地克隆在它们之间同步,都在同一个分支中