如何使用forEach遍历嵌套数组并统计指定元素的出现次数
问题原因
你的items是二维嵌套数组,直接调用外层forEach遍历得到的每一项v是内层的子数组(比如首次遍历得到的是["a","b"]),不可能和字符串"a"相等,所以判断条件永远不触发,没有输出。
可行解决方案
- 方案1:嵌套遍历两层数组
let items = [["a","b"],["c","a"],["b","a"]]; // 外层遍历拿到每个子数组 items.forEach(subArr => { // 内层遍历子数组的每个元素 subArr.forEach(item => item === "a" && console.log(item)) })
- 方案2:先拍平数组再遍历
用数组flat()方法先把二维数组转为一维数组,再统一遍历判断:
let items = [["a","b"],["c","a"],["b","a"]]; items.flat().forEach(item => item === "a" && console.log(item))
如果存在更深层级的嵌套(比如三维、四维数组),可以给flat传入Infinity参数,会把所有层级的嵌套都拍平为一维数组:
// 适配任意深度嵌套的通用写法 let items = [["a","b"],["c",["a",["e","a"]]],["b","a"]]; items.flat(Infinity).forEach(item => item === "a" && console.log(item))
内容的提问来源于stack exchange,提问作者Samuel Liebert
相关产品推荐
相关产品推荐

