如何使用用户自定义数量的筛选条件过滤JS数组?
解决方案
直接利用数组的includes()方法就能实现任意数量状态的筛选——它会检查当前元素的状态是否存在于筛选条件数组filters中,效果等价于多个||的逻辑判断,而且完全不需要提前知晓条件的数量:
// 注意:原代码中对象属性名存在拼写错误,`staus` 应改为 `status` let profileList = [{name: "John", status: "green"}, {name: "Alex", status: "yellow"}, {name: "Jane", status: "green"}] // 用户选择的筛选条件 let filters = ["green", "red"] const filteredProfileList = profileList.filter(element => { return filters.includes(element.status); }); console.log(filteredProfileList); // 输出结果:[{name: "John", status: "green"}, {name: "Jane", status: "green"}]
额外优化
如果需要处理「用户未选择任何筛选条件(即filters为空数组)时返回全部数据」的场景,可以添加简单的判断:
const filteredProfileList = profileList.filter(element => { return filters.length === 0 || filters.includes(element.status); });
includes()是ES6标准方法,兼容性覆盖所有现代浏览器及Node.js 6.0以上版本,无需额外兼容处理。
内容的提问来源于stack exchange,提问作者jeff3546
相关产品推荐
相关产品推荐

