为什么我的多维数组的属性没有更新

时间:2019-03-20 09:09:27

标签: javascript typescript

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

输出:

  

未定义

这是正在发生的事情,

  1. 所有成员的“检查X”属性为空
  2. 如果是,则自动填充它;如果填写了任何属性,则保持原样

2 个答案:

答案 0 :(得分:0)

您在第一个for循环中犯了一个错误:

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

这不会检查所有成员的X属性是否为空。一旦找到existshas value X的成员,loop就会中断,并且其余代码将不会执行任何操作,因为isEmptyfalse

代码应这样写:-

const members = [[1,2,3],[1,2,3,4]];

let isEmpty = true;

for(let i =0; i<members.length; i++) {
    let member = members[i]
    if (member && member[3]) {
        isEmpty = false
    }
}
if(!isEmpty) {
    let someprefix = "123 - "
    for(let i =0; i<members.length; i++){
        var member = members[i]
        if (member && member[2]) {
            member[3] = someprefix + i;
        }
    }
}
console.log(members[0][3])

答案 1 :(得分:0)

这是一个错字,我在测试时使用的是会员而不是会员...

已更改

console.log(member[1][3]) 

进入

console.log(members[1][3])