繁体   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