如何过滤对象数组中元素内部的数组并返回匹配过滤条件的新数组
实现方案
需求说明
需要过滤外层对象数组,仅保留内部b数组恰好只包含指定过滤值、无其他额外值的元素。
代码实现
const example = [ { id: 1, b: [1, 2]}, {id:2, b:[1]}, {id:3, b: [1,3]}] const filterVal = 1 // 变量名避免和数组filter方法重名,减少命名冲突 const result = example.filter(item => { // 双条件判断:b数组所有元素等于目标值 + 数组长度为1,保证无其他值 return item.b.every(val => val === filterVal) && item.b.length === 1 }) console.log(result) // 输出结果:[{id: 2, b: [1]}]
逻辑补充
- 外层调用数组
filter方法遍历原数组,会自动将符合判断条件的元素组合为新数组返回 - 内层
every方法用于校验b数组所有元素都匹配目标值,避免出现包含目标值同时混入其他值的情况 - 如果你的业务场景允许
b数组为[1,1]这类多重复目标值的元素也被保留,去掉长度判断的条件即可。
内容的提问来源于stack exchange,提问作者5in1testing
相关产品推荐
相关产品推荐

