В 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.