как правильно вернуть массив?

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

Приятная побочка: Будет умножать числа любой вложенности...

→ Ссылка