我已经创建了这个2D数组,我试图删除包含5个"一"或更多的行,

是因为我没有正确使用拼接还是应该使用不同的方法?

谢谢

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);

Javascript相关问答推荐

Redux工具包查询(RTKQ)端点无效并重新验证多次触发

Cypress -使用commands.js将数据测试id串在一起失败,但在将它们串在一起时不使用命令有效

在React中获取数据后,如何避免不必要的组件闪现1秒?

类型脚本中只有字符串或数字键而不是符号键的对象

使搜索栏更改语言

CheckBox作为Vue3中的一个组件

用于编辑CSS样式的Java脚本

如果Arrow函数返回函数,而不是为useEffect返回NULL,则会出现错误

在浏览器中触发插入事件时检索编码值的能力

以Angular 实现ng-Circle-Progress时出错:模块没有导出的成员

使用js构造一个html<;ath&>元素并不能使其正确呈现

检索相加到点的子项

Webpack在导入前混淆文件名

NG/Express API路由处理程序停止工作

FileReader()不能处理Firefox和GiB文件

select 2-删除js插入的项目将其保留为选项

需要RTK-在ReactJS中查询多个组件的Mutations 数据

脚本语法错误只是一个字符串,而不是一个对象?

react :图表负片区域不同 colored颜色

在不使用AJAX的情况下将JavaScript数组值传递给Laravel控制器?