[英]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);
}
}
因此,在第一個示例中,斑點為nr。 9大於10000,因此應拼接/刪除其父級。 當前,這僅刪除數組的一部分或什么都沒有。
有任何想法嗎? 謝謝 :)
在你的代碼中
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
循環在這里不起作用。
只需走一會兒,僅在未拼接時才增加。
var i = comb.length;
while (i--) {
if (comb[i][9] > 10000) {
comb.splice(i, 1);
}
}
在每個comb.splice上,將從comb數組中刪除一個元素,並減小comb.length,這將導致循環的意外副作用,使其永遠無法到達某些數組索引。
快速解決:
comb.splice(i,1, []); // Remove the array at that index and replace it with an empty one
正確的解決方法:您應遵循@Terminus的建議作為評論
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.