Почему результат вызова функции передает строчный элемент не разделенный комами?
function openOrSenior(data){
let user = []
for (let i = 0; i < data.length; ++i){
if (data[i][0] >= 55 && data[i][1] > 7){
user += "Senior"
} else {
user += "Open"
}
}
return user
}
openOrSenior([[45, 12],[55,21],[19, -2],[104, 20]])
Expected
input = [[45, 12],[55,21],[19, -2],[104, 20]]
output = ['Open', 'Senior', 'Open', 'Senior']
Получаю
'OpenSeniorOpenSenior'
Ответы (1 шт):
Автор решения: ThisMan
→ Ссылка
У вас user имеет тип массива. При сложении со строкой, обе переменные неявно приводятся к строке, поэтому появляется не совсем понятное поведение
const a = 10;
a + '10'; // будет не 20, а 1010
const b = [];
b + '10'; // будет 10, так как пустой массив приводится к пустой строке
Для решения вашей задачи, нужно заменить сложение на вызов метода push массива
function openOrSenior(data){
let user = []
for (let i = 0; i < data.length; ++i){
if (data[i][0] >= 55 && data[i][1] > 7){
user.push("Senior"); // добавляем элемент в массив
} else {
user.push("Open"); // добавляем элемент в массив
}
}
return user
}
const result = openOrSenior([[45, 12],[55,21],[19, -2],[104, 20]]);
console.log(result);