在javascript中从多维数组中删除特殊元素

时间:2017-11-26 10:52:50

标签: javascript arrays multidimensional-array

我的数组看起来像这样:

var my_array=[
  [[1,0], [2,2], [4,1]],
  [[4,9], [3,1], [4,2]],
  [[5,6], [1,5], [9,0]]
]

我想过滤上面的my_array并从上面的数组中删除所有数组(例如[[4,9], [3,1], [4,2]])如果数组的所有child arrays都没有特定值(例如{{ 1}})在1.位置(0

所以我的结果应该是这样的:

child array[1]
  

见上文:从var result_array=[ [[1,0], [2,0], [4,1]], [[5,6], [1,5], [9,0]] ] 删除第二个数组,因为第二个子数组在第一个索引处不包含my_array - 列。

我的想法是使用类似这样的代码,但我无法真正使用它:

0

1 个答案:

答案 0 :(得分:1)

简单的方法是在外部数组的filter中使用Array#some来查找符合我们标准的任何数组,并使用Array#includes(或Array#indexOffind回调中查看旧版浏览器,与未找到的-1进行比较,以查看子数组是否包含0

在ES2015 +



var my_array=[
  [[1,0], [2,2], [4,1]],
  [[4,9], [3,1], [4,2]],
  [[5,6], [1,5], [9,0]]
];
var filtered = my_array.filter(middle => middle.some(inner => inner.includes(0)));
console.log(filtered);

.as-console-wrapper {
  max-height: 100% !important;
}




或者在ES5中:



var my_array=[
  [[1,0], [2,2], [4,1]],
  [[4,9], [3,1], [4,2]],
  [[5,6], [1,5], [9,0]]
];
var filtered = my_array.filter(function(middle) {
  return middle.some(function(inner) {
    return inner.indexOf(0) != -1;
  });
});
console.log(filtered);

.as-console-wrapper {
  max-height: 100% !important;
}