如何从 javascript 中的多维数组中删除数组?

How can i remove an array from a multidimensional array in javascript?

所以我目前有一个多维数组,里面有大量由函数创建的数组,在这个结构中

0: Array[10]
    0: Array[5]
    1: Array[5]
    2: Array[5]
    3: Array[5]
    4: Array[5]
    5: Array[5]
    6: Array[5]
    7: Array[5]
    8: 335.74
    9: 10341
1: Array[10]
2: Array[10]
3: Array[10]
.... and so on.

因为创建这个数组的函数是一个计算其中 8 个数组的所有可能组合的函数(最后 2 个在后面附加)数组很长所以我想过滤其中的一些出去。我在这里尝试删除最后一个元素的值大于 10000 的所有数组,如果它确实删除了整个数组。

for (i = 0; i < comb.length; ++i) {
    if (comb[i][9] > 10000) {
        comb.splice([i],1);
    }
}

所以在第一个例子中,spot nr。 9 在 10000 以上,所以它应该 splice/remove 它的父级。 目前这只是删除数组的一部分或什么都不删除..

有什么想法吗?谢谢:)

在你的代码中

for (i = 0; i < comb.length; ++i) {
    if (comb[i][9] > 10000) {
        comb.splice([i],1);
    }
}

您删除了一个元素并将计数器加一。因此,例如您删除元素 5 并且计数器上升到 6,访问的元素现在是 7 并且不处理第 6 个元素。

          5         counter i
0 1 2 3 4 5 6 7 8 9 array elements
          5         delete element
0 1 2 3 4 6 7 8 9   array elements
            6       counter i
0 1 2 3 4 6 7 8 9   array elements

因此固定间隔的for循环在这里不起作用。

while就走,不拼接的时候才增加

var i = comb.length;
while (i--) {
    if (comb[i][9] > 10000) {
        comb.splice(i, 1);
    }
}

在每个 comb.splice 上,一个元素将从梳状数组中删除,并且 comb.length 将递减,这将导致循环的意外副作用永远不会到达某些数组索引.. .

快速修复:

comb.splice(i,1, []); // Remove the array at that index and replace it with an empty one

正确修复: 您应该遵循 @Terminus' 作为评论

提供的建议