Как найти сумму чисел массива?
Как найти сумму чисел массива?
В круглых скобках входные данные, далее результат. // ([1, 2, '3x']) => 6 // ([1, 2, 'x3']) => 3 // ([1, [1, 2], 2]) => 6 |
Цитата:
Обнулить счетчик. Пройтись в цикле по всем элементам... Если значение строка - приводить ее к числу, прибавить значение к счетчику... Если значение массив - вызывать себя рекурсивно, прибавить значение к счетчику... Если число - прибавить значение к счетчику... По окончании прохода вернуть значение счетчика. |
Цитата:
|
const sum = function sum(arr) { arr = arr.map(n => Array.isArray(n) ? sum(n) : parseFloat(n) || 0); return eval(arr.join('+')); } alert(sum([1, 2, '3x'])); alert(sum([1, 2, 'x3'])); alert(sum([1, [1, 2], 2])); or const sum = arr => eval(arr.map(n => Array.isArray(n) ? sum(n) : parseFloat(n) || 0).join('+')); alert(sum([1, 2, '3x'])); alert(sum([1, 2, 'x3'])); alert(sum([1, [1, 2], 2])); or const sum = function sum(arr) { let res = 0; for (const n of arr) { res += Array.isArray(n) ? sum(n) : parseFloat(n) || 0; } return res; } alert(sum([1, 2, '3x'])); alert(sum([1, 2, 'x3'])); alert(sum([1, [1, 2], 2])); |
:) :write:
const sum = arr => arr.flat().reduce((sum, x) => sum += (x = parseFloat(x)) ? x : 0, 0) alert(sum([1, 2, '3x'])); alert(sum([1, 2, 'x3'])); alert(sum([1, [1, 2], 2])); |
const sum = arr => arr.flat().map(x => parseFloat(x) || 0).reduce((a, b) => a + b, 0); alert(sum([1, 2, '3x'])); alert(sum([1, 2, 'x3'])); alert(sum([1, [1, 2], 2])); |
Всем спасибо. Есть над чем посидеть поразбираться.
|
Часовой пояс GMT +3, время: 03:41. |