为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

aluckdog 2021-07-09 10:01:00
我有一个二维数组,我正在尝试操作/合并类似的条目。我推动-1我标记为删除的数组的第 3 个索引。这是一个示例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')..等等,然后我收到一个类型错误:Uncaught TypeError: Cannot read property 'length' of undefined我也试过使用:if( rowArray[i].length  > 3 ) 但这给了我错误: Uncaught TypeError: Cannot read property 'length' of undefined这是我的代码:     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。也愿意为这个问题提供更好的解决方案(一如既往)。
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

问题是,在第二个循环中,您是从 开始的,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);

   }

 }


查看完整回答
反对 回复 2021-07-15
  • 1 回答
  • 0 关注
  • 211 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信