2014-12-26 3 views
0

Как добавить к 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 «s существует, но я не знаю, если есть y для каждого x.

Также проблема может включать в себя большее количество массивов различной неопределенных размеров (не только х и у, скажем, T, U, V, W именованных массивов, которые могут или не могут иметь такую ​​же длину)

Как бы я проходное добавление всех массивов вместе без изменения цикла, создание NaN или добавление нулей?

Можно ли это сделать inline?

+0

'if (x.length == y.length)'? – dfsq

+0

Что означает «без изменения цикла»? Вы не будете изменять свой код ?! –

ответ

0

Это лучше всего работает

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

y не имеет значения существующих. x имеет ценность, которую мы знаем. Я могу смело добавить x в z и безопасно добавить null в z, если y не существует. По какой бы то ни было причине, если все должно было пройти null, я в конечном итоге получаю z undefined.

0

Вам нужно только условие if, чтобы проверить, равны ли длины массива.

if(x.length == y.length) { 
    var i = x.length; 
    while(i--) 
    z[i]=x[i]+y[i]; 
} 
0
while (i--) { 
    z[i] = ((i > y.length - 1)? x[i] : x[i] + y[i]); 
} 
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]; 
    } 
}