как правильно вернуть массив?
function double(value) {
if (Array.isArray(value)) {
value.forEach(function(item) {
return item * 2
})
}
return value * 2;
}
console.log(double(2)); // 4
console.log(double([1, 2, 3])); // NaN
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
function double(value) {
if (Array.isArray(value)) {
return value.map(function(item) { // retun value.map(item => item * 2);
return item * 2 //
}) //
}
return value * 2;
}
console.log(double(2)); // 4
console.log(double([1, 2, 3]));
Автор решения: OPTIMUS PRIME
→ Ссылка
Функция может передавать саму себя в map:
function double(val) {
return Array.isArray(val) ? val.map(double) : val * 2;
}
console.log(double(2));
console.log(double([1, 2, 3]));
console.log(double([1, [2, [3]]]));
map() в свою очередь вызовет её для каждого элемента массва, передавая его в виде первого аргумента функции (val). Если он оказался числом, Array.isArray(val) будет false, вернется val * 2
Приятная побочка: Будет умножать числа любой вложенности...