Всем привет, подскажите, пожалуйста, как решить следующую задачу?
В круглых скобках входные данные, далее результат.
// ([1, 2, '3x']) => 6
// ([1, 2, 'x3']) => 3
// ([1, [1, 2], 2]) => 6
Всем привет, подскажите, пожалуйста, как решить следующую задачу?
В круглых скобках входные данные, далее результат.
// ([1, 2, '3x']) => 6
// ([1, 2, 'x3']) => 3
// ([1, [1, 2], 2]) => 6
Привет. Знаешь как решить задачу для ситуации когда все значения массива - числа? Можешь показать код?
const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15
Надо строчки привести к числам, иначе сложение будет выдавать сложение строк. Но это не сработает потому-что строчка состоит не только из цифр и выведет NaN, можно разбить строчку на символы и удалить x, потом соединить и перевести в число и сложить. Все что сгенерировал мой мозг)(сложение строк будет только когда возле плюса строка, 1 + 1 +“1” будет выдавать 21)
Привет!
Вот мой вариант решения твоей задачи:
function summArray (currArray) {
return currArray.reduce((accumulator, currentValue) => {
let parsedCurrVal = 0;
// если текущий элемент массив
if(Array.isArray(currentValue)) {
parsedCurrVal = summArray(currentValue);
// если преобразование элемента с помощью parseInt не NaN
} else if (!isNaN(parseInt(currentValue))) {
parsedCurrVal = parseInt(currentValue);
}
return accumulator + parsedCurrVal
}, 0)
}
console.log(summArray([1, [1, 2], 2])); //6
console.log(summArray([1, 2, '3x'])) // 6
console.log(summArray([1, 2, 'x3'])) // 3
Спасибо.