JavaScript如何检查外层数组的所有内层数组中是否存在指定值
多层数组指定值存在性检查的简洁实现
你可以直接用JS数组内置的some方法完成需求,代码更简洁的同时还自带短路优化,匹配到目标值后就会立刻终止遍历,比你原有未做中断的双层循环效率更高:
const target = "Kiwi" const result = arr.some(item => item.innerArr.some(inner => inner.val === target)) console.log(result) // 存在返回true,不存在返回false
逻辑说明
- 外层
some遍历外层数组的所有元素,只要任意一个元素满足内层判断条件就直接返回true,不会继续遍历剩余元素 - 内层
some遍历每个元素的innerArr数组,只要任意一个元素的val属性等于目标值就返回true - 整体逻辑和你原有双层循环的输出结果完全一致,查询"Kiwi"返回
true,查询不存在的"Strawberry"返回false
如果需要兼容旧版不支持ES6箭头函数的环境,可以使用ES5的写法:
var target = "Kiwi" var result = arr.some(function(item) { return item.innerArr.some(function(innerItem) { return innerItem.val === target }) })
内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito
相关产品推荐
相关产品推荐

