Javascript 为什么我的多维数组';s属性不是';不要更新 var isEmpty=true; for(设i=0;i

Javascript 为什么我的多维数组';s属性不是';不要更新 var isEmpty=true; for(设i=0;i,javascript,typescript,Javascript,Typescript,输出: 未定义 这就是发生的事情 检查所有成员的X属性是否为空 如果是,则自动填充,如果填充了任何属性,则保持原样 您在第一个for循环中出错: var isEmpty = true; for(let i = 0; i< members.length; i++) { var member = members[i]; if(member && member[3]){ isEmpty = false; break;

输出:

未定义

这就是发生的事情

  • 检查所有成员的X属性是否为空
  • 如果是,则自动填充,如果填充了任何属性,则保持原样

  • 您在第一个
    for
    循环中出错:

    var isEmpty = true;
    for(let i = 0; i< members.length; i++)
    {   
        var member = members[i];
        if(member && member[3]){
            isEmpty = false;
            break;
        }   
    }
    
    if(isEmpty) {
        var somePrefix = "123 -"
        for(let i = 0; i< members.length; i++)
        {   
            var member = members[i];
            if(member && member[2]){
                member[3] = somePrefix + i;
            }   
        }
    }
    
    console.log(member[1][3])  // just testing
    

    这是一个输入错误,我在测试时使用的是成员而不是成员

    变了,

    for (let i = 0; i <= members.length; i++) {
      var member = members[i];
      if (member && member[3]) {
        isEmpty = false;
        break;
      }
    }
    
    变成


    首先是
    成员和成员[3]
    ,在第二个循环中是
    成员和成员[2]
    。这是设计的吗?可能有一个项目,
    [3]
    [2]
    都是空的,然后你就不会写任何东西了。你也在循环<代码>我能告诉我们<代码>成员吗<代码>请?@AdrianoRepetti是的,这是设计的不幸…,因为第二次修订,但oyt是相同的,在调试中,一步一步地,突出显示任何奇怪的东西(=它执行所有你认为应该执行的事情)?谢谢你们的时间,测试时碰巧出现了一个键入错误,这似乎是故意的:“…如果有任何属性已填充,请保持原样。”以及“…所有成员的属性均为空。”。还要注意,使用
    break
    退出循环或像您的示例中那样保持循环具有完全相同的效果。
    console.log(member[1][3]) 
    
    console.log(members[1][3])