簡體   English   中英

在 Javascript 中使用二維數組中的拼接

[英]using splice inside 2D Array in Javascript

我已經創建了這個二維數組,我試圖刪除具有 5 個或更多“1”的行,我嘗試使用 splice (a.splice(j,1)) 但它不起作用。 我認為是因為當使用這種方法時,它會改變整個行數,這會影響 for 循環。

是因為我沒有正確使用拼接還是應該使用不同的方法?

謝謝 !

 a = Array(7).fill(0).map(x => Array(10).fill(0)) for (let i = 0; i < 5; i++) { a[1][i + 2] = 1; a[4][i + 2] = 1; a[5][i + 2] = 1; } console.log(a); let count = 0; for (let j = 0; j < 7; j++) { for (let i = 0; i < 10; i++) { if (a[j][i] == 1) { count = count + 1; } } if (count > 4) { console.log("Line" + j); // a.splice(j,1); } count = 0; // a.splice(j,1); }

您的splice是正確的,但是您在數組中向前移動( j遞增)。 要執行這種類型的操作,您需要在數組中向后移動( j遞減) - 這樣更改的數組索引不會干擾您的循環。

請參見下面的示例:

 a = Array(7).fill(0).map(x => Array(10).fill(0)) for (let i=0; i<5; i++) { a[1][i+2] = 1; a[4][i+2] = 1; a[5][i+2] = 1; } console.log("Original array"); console.log(a); for (let j = a.length - 1; j > 0; j--) { var count; for (let i = 0; i < a[j].length; i++) { if (a[j][i] === 1) { count += 1 } } if (count > 4) { a.splice(j, 1); } count = 0; } console.log("Filtered array"); console.log(a);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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