javascript - 如何访问for循环内的子数组长度?

标签 javascript

我有一个二维数组,我正在尝试操作/合并相似的条目。我将 -1 压入我标记为删除的数组的第三个索引。以下是 rowArray 的示例:

[
   [44,16,0,-1],
   [44,16,1,-1],
   [44,16,0]
]

在我的 for 循环中,我递减数组,如果 rowArray[i][3] 存在,我会尝试从矩阵中弹出该数组。我的问题是,在我的 if 中我总是遇到问题。当我使用时:

if( rowArray[i][3] )..if( rowArray[i][3] !== 'undefined').. 等。然后我收到一个 TypeError:

未捕获类型错误:无法读取未定义的属性“长度”

我也尝试过使用:

if( rowArray[i].length > 3 ) 但这给了我错误: 未捕获类型错误:无法读取未定义的属性“长度”

这是我的代码:

     rowArray = [ [44, 16, 0, -1], [44, 16, 1, -1], [44, 16, 0] ];
     for (var i = 1; i < rowArray.length; i++) {
       if (rowArray[parseInt(i - 1)][0] == rowArray[i][0] && rowArray[parseInt(i - 1)][1] == rowArray[i][1]) {
         rowArray[i][2] += parseFloat(rowArray[parseInt(i - 1)][2]);
         rowArray[parseInt(i - 1)][3] = -1;
       }
     }
     for (var i = rowArray.length; i >= 0; i--) {
       console.log(rowArray[i].length);
       if (rowArray[i][3] !== 'undefined') {
         rowArray.splice(i, 1);
       }
     }

预期输出:

[[44,16,1]]

我应该提到我正在使用 jQuery 3.4.0。也对这个问题的更好解决方案持开放态度(一如既往)。

最佳答案

问题是,在第二个循环中,您从 rowArray.length 开始,这是不正确的,因为最后一项是 rowArray.length-1。那是因为数组从 0 开始。所以你的第二个循环将如下所示:

for (var i = rowArray.length-1; i >= 0; i--) {
   console.log(rowArray[i].length);
   if (rowArray[i][3] !== 'undefined') {
     rowArray.splice(i, 1);
   }
 }

关于javascript - 如何访问for循环内的子数组长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56743361/

相关文章:

javascript - 将工作表复制到新电子表格,将单元格值添加到新电子表格名称的末尾

javascript - 无需 Javascript 或 <a> 或 href 即可使 Div 可点击

自动计算字符串中连续字母的JavaScript函数

javascript - 类作为对象中的元素

javascript - 清除整个 Canvas 比清除部分更快?

javascript - 用谷歌脚本中的条件替换字符串

javascript - 自定义字符串而不是 console.log 中的 "Object"

javascript - javascript中哪里使用了这种语法(function(){}())

php - Javascript 无法在 Internet Explorer 上运行

javascript - 以 AngularJS 的方式使用 toastr