Проблема в том, что вы объявили x=[]
, но измените его как x += arr[i][j];
, как только javascript попадет на эту строку. Он обрабатывает массив как строку, вызывающую x.toString()
внутри и добавляющую к этой строке. Например, если вы объявите массив как a=[]
и вызовете a+=1
, тогда a
станет "1"
. В javascript все типизировано по значению, не имеет значения, что вы объявляете, когда присваиваете ему какое-либо значение или выполняете какую-либо операцию над переменной, оно преобразуется в тип значения.
Я бы порекомендовал вам пройти через это
let getValidPassword = arr => {
let x = [];
let temp = [];
for (let i in arr) {
for (let j in arr[i]) {
if (arr[i][j] % 2 !== 0) {
break;
} else {
temp.push(arr[i][j]);
}
if(temp.length == arr[i].length)
x = temp.slice();
}
}
return x
};
var loggedPasscodes = [
[1, 4, 4, 1],
[1, 2, 3, 1],
[2, 6, 0, 8],
[5, 5, 5, 5],
[4, 3, 4, 3]
];
console.log(getValidPassword(loggedPasscodes));