在Javascript中过滤二维数组

时间:2017-12-29 11:33:15

标签: javascript arrays

我有一个这样的整数数组:

var items = [
  [1, 1, 2, 4],
  [2, 1, 4, 6],
  [5, 6, 4, 1],
  [1, 6, 3, 1]
];

是否有一种简单的方法可以在定义的位置查找和删除具有特定值的所有数组? 例如,如果我想在第二个位置删除所有带“1”的数组,结果应为:

var items = [
  [5, 6, 4, 1],
  [1, 6, 3, 1]
];

如果我在第三个位置删除全部为'4',结果应为:

var items = [
  [1, 1, 2, 4],
  [1, 6, 3, 1]
];

我知道我可以通过遍历所有元素来做到这一点,但是当二维数组很大(> 1000个数组)时,这似乎需要很长时间。

1 个答案:

答案 0 :(得分:8)

迭代items,使用Array#filter函数过滤那些在给定位置没有给定值的内部数组



function filterByPosition(array, number, position) {
   return array.filter(innerArray => innerArray[position - 1] !== number);
}

const items = [
  [1, 1, 2, 4],
  [2, 1, 4, 6],
  [5, 6, 4, 1],
  [1, 6, 3, 1]
];

const newItems1 = filterByPosition(items, 1, 2);
console.log('Items1:', newItems1);

const newItems2 = filterByPosition(items, 4, 3);
console.log('Items2:', newItems2);