let arr1 = [1, [2,[3,[4]]]];
let array = arr1.reduce( function (sum, elem) {
return sum.concat(elem);
}
);
console.log(array );
Ошибка:
Uncaught TypeError: sum.concat is not a function
at index.html:635
at Array.reduce (<anonymous>)
at index.html:634
(anonymous) @ index.html:635
(anonymous) @ index.html:634
В чем проблема?
В общем, если я правильно понял вопрос, нужно посчитать сумму чисел во вложенных списках списка arr1
, для начала мы преобразуем список списков в один список, в котором будут все данные и потом их сложим.
let arr1 = [1, [2,[3,[4]]]];
//для глубокого упрощения используем рекурсивно reduce и concat
function flattenDeep(arr1) {
return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);
}
const array1 = flattenDeep(arr1);
console.log(array1); // => [ 1, 2, 3, 4 ]
const reducer = (accumulator, currentValue) => accumulator + currentValue;
result = array1.reduce(reducer);
console.log(result); // => 10
Источник:
1. https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
2. https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть скрипт выпадающего блока, проблема в том, если его открыть, то он закрывается по любому клику (не важно кликните вы по открывшимся блоке...
Пытаюсь разобраться, как передавать данные между siblings-компонентамиИдея такая: нужно сделать так, чтоб класс active был только у одного child-компонента...