Эффективное вычисление суммы вложенного массива в JavaScript: изучите несколько подходов!

В JavaScript существует несколько способов вычисления суммы вложенного массива. В этом сообщении блога мы рассмотрим различные методы решения этой задачи с помощью функции map. Независимо от того, являетесь ли вы новичком или опытным разработчиком, в этой статье вы найдете различные подходы, соответствующие вашему стилю кодирования и требованиям к производительности.

Метод 1: использование функции reduceс рекурсией
Пример кода:

function sumNestedArray(arr) {
  return arr.reduce((acc, curr) => {
    if (Array.isArray(curr)) {
      return acc + sumNestedArray(curr);
    }
    return acc + curr;
  }, 0);
}
const nestedArray = [1, [2, [3, 4], 5], 6];
const result = sumNestedArray(nestedArray);
console.log(result); // Output: 21

Метод 2: использование функций flatи reduce
Пример кода:

function sumNestedArray(arr) {
  return arr.flat(Infinity).reduce((acc, curr) => acc + curr, 0);
}
const nestedArray = [1, [2, [3, 4], 5], 6];
const result = sumNestedArray(nestedArray);
console.log(result); // Output: 21

Метод 3: использование функций flatMapи reduce
Пример кода:

function sumNestedArray(arr) {
  return arr.flatMap((elem) => (Array.isArray(elem) ? sumNestedArray(elem) : elem))
    .reduce((acc, curr) => acc + curr, 0);
}
const nestedArray = [1, [2, [3, 4], 5], 6];
const result = sumNestedArray(nestedArray);
console.log(result); // Output: 21

Метод 4. Использование стека и итерации
Пример кода:

function sumNestedArray(arr) {
  let sum = 0;
  const stack = [...arr];
  while (stack.length) {
    const curr = stack.pop();
    if (Array.isArray(curr)) {
      stack.push(...curr);
    } else {
      sum += curr;
    }
  }
  return sum;
}
const nestedArray = [1, [2, [3, 4], 5], 6];
const result = sumNestedArray(nestedArray);
console.log(result); // Output: 21

В этой статье мы рассмотрели четыре различных метода вычисления суммы вложенного массива с помощью функции mapв JavaScript. Мы рассмотрели рекурсивные подходы, а также методы, использующие flat, flatMapи итерации на основе стека. Используя эти методы, вы можете выбрать наиболее подходящее решение для вашего конкретного случая использования. Понимание этих методов улучшит ваши навыки программирования и позволит более эффективно манипулировать вложенными массивами в JavaScript.