检查数组元素/项是否未定义

时间:2014-12-26 15:48:18

标签: javascript arrays math

如果z存在,而不添加零,那么如何添加到y

var x=[-1,2,44,6];

var y=[33,2,1];      //a shorter array where y[3] does not exist

var z=[];

var i=x.length;

while(i--){

    z[i]=x[i]+y[i];

    }

当我知道所有x都存在但我不知道每个y是否有x时。

此外,问题可能包括更多不确定大小的数组(不只是x和y,比如t,u,v,w命名的数组可能有也可能没有相同的长度)

如何在不更改循环的情况下循环添加所有数组,创建NaN或添加任何零?

可以内联完成吗?

4 个答案:

答案 0 :(得分:0)

您只需要一个if条件来检查数组的长度是否相等。

if(x.length == y.length) {
  var i = x.length;
  while(i--)
    z[i]=x[i]+y[i];
}

答案 1 :(得分:0)

while (i--) {
    z[i] = ((i > y.length - 1)? x[i] : x[i] + y[i]);
}

答案 2 :(得分:0)

var x=[-1,2,44,6];

var y=[33,2,1];      //a shorter array where y[3] does not exist

var z=[];

var i=Math.max(y.length, x.length);

while(i--){
    if (typeof y[i] !== 'undefined'  && x[i] !== 'undefined')  {
       z[i]=x[i]+y[i];
    }
}

答案 3 :(得分:0)

这效果最好

var y=[];
var x=[1];
var z=(x[0]+(y[0]?y[0]:null)||undefined);

y没有现有值。 x具有我们知道存在的值。如果x不存在,我可以安全地将z添加到z并安全地将空值添加到y。无论出于何种原因,如果一切都变为空,那么我最终会得到z未定义。

相关问题