簡體   English   中英

如何在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);
    }
}

因此,在第一個示例中,斑點為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM