@ Ray , допустим, я предполагаю, что оба ваших массива одинаковой длины, тогда приведенный ниже код будет работать так, как вы хотите.
Здесь используется троичный оператор (условный оператор) *Великие роли играют 1005 * и 2 логических оператора &&
, ||
. Код работает как для 0
, ''
, так и для undefined
, null
.
Попробуйте онлайн на http://rextester.com/HYR69124.
// empNum() is a function which takes 2 arrays of same length as parameters
var empNum = (data1, data2) => {
var activeArr = [];
for (var i=0; i<data1.length; i++) {
activeArr.push(data1[i] && data2[i] ? 2 : 1); // Using ternary operator ?:
}
return activeArr;
}
// Test 1
var array1= [5, 6, 44, 2, 6];
var array2 = ['', '', '', 5, 7];
console.log(empNum(array1, array2)); //[ 1, 1, 1, 2, 2 ]
// Test 2
console.log(empNum([5, 0, 44, 2, 6], [8, 7, undefined, 5, 7,] )); // [ 2, 1, 1, 2, 2 ]
// Test 3
console.log(empNum(["JavaScript", 0, undefined, null, 6], [8, 7, undefined, 5, 7,] )); // [ 2, 1, 1, 1, 2 ]
// Test 4
console.log(empNum([0, 0, 44, 2, "Python"], [8, 7, undefined, 5, 7,] )); // [ 1, 1, 1, 2, 2 ]
"Выход
[ 1, 1, 1, 2, 2 ]
[ 2, 1, 1, 2, 2 ]
[ 2, 1, 1, 1, 2 ]
[ 1, 1, 1, 2, 2 ]