如何遍历数组,返回前两个元素匹配指定值的子数组?
二维数组筛选正确实现方法
给定二维数组:
var arrays = [ [1, 2, 1], [1, 3, 4], [1, 2, 3], [0, 2, 2] ];
需要筛选出前两个元素分别为1和2的子数组,预期结果:
[ [1, 2, 1], [1, 2, 3] ]
错误原因分析
你之前的嵌套循环返回错误结果,大概率是判断条件只校验了第二个元素为2,没同时校验第一个元素为1,导致[0,2,2]被误纳入结果。
正确实现方法
方法1:普通for循环
var result = []; for (var i = 0; i < arrays.length; i++) { const subArr = arrays[i]; // 必须同时满足两个条件:第一个元素是1,第二个是2 if (subArr[0] === 1 && subArr[1] === 2) { result.push(subArr); } } console.log(result);
方法2:使用数组filter方法(更简洁)
ES5写法:
var result = arrays.filter(function(subArr) { return subArr[0] === 1 && subArr[1] === 2; }); console.log(result);
ES6箭头函数简化版:
const result = arrays.filter(subArr => subArr[0] === 1 && subArr[1] === 2); console.log(result);
两种方法都能得到符合预期的筛选结果。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

