如何从 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' 作为评论
提供的建议
所以我目前有一个多维数组,里面有大量由函数创建的数组,在这个结构中
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' 作为评论
提供的建议