Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.09.2019, 09:18
Аспирант
Отправить личное сообщение для gsdev99 Посмотреть профиль Найти все сообщения от gsdev99
 
Регистрация: 03.02.2019
Сообщений: 72

Как найти сумму чисел массива?
Как найти сумму чисел массива?
В круглых скобках входные данные, далее результат.
// ([1, 2, '3x']) => 6
// ([1, 2, 'x3']) => 3
// ([1, [1, 2], 2]) => 6
Ответить с цитированием
  #2 (permalink)  
Старый 18.09.2019, 09:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от gsdev99
Как найти сумму чисел массива?
Написать функцию с таким алгоритмом:

Обнулить счетчик.
Пройтись в цикле по всем элементам...
Если значение строка - приводить ее к числу, прибавить значение к счетчику...
Если значение массив - вызывать себя рекурсивно, прибавить значение к счетчику...
Если число - прибавить значение к счетчику...
По окончании прохода вернуть значение счетчика.
Ответить с цитированием
  #3 (permalink)  
Старый 18.09.2019, 10:55
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от ksa
Если значение строка - приводить ее к числу, прибавить значение к счетчику...
тут не забыть проверить isNaN()
Ответить с цитированием
  #4 (permalink)  
Старый 18.09.2019, 11:42
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

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]));

Последний раз редактировалось ruslan_mart, 18.09.2019 в 11:46.
Ответить с цитированием
  #5 (permalink)  
Старый 18.09.2019, 12:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068


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]));

Последний раз редактировалось рони, 18.09.2019 в 12:31.
Ответить с цитированием
  #6 (permalink)  
Старый 18.09.2019, 14:21
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

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]));
Ответить с цитированием
  #7 (permalink)  
Старый 18.09.2019, 17:56
Аспирант
Отправить личное сообщение для gsdev99 Посмотреть профиль Найти все сообщения от gsdev99
 
Регистрация: 03.02.2019
Сообщений: 72

Всем спасибо. Есть над чем посидеть поразбираться.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти сумму цифр числа yaparoff Общие вопросы Javascript 7 02.01.2021 19:32
Как Найти координаты вектора в таблице? xTODx jQuery 9 18.06.2015 00:57
Как улучшить сортировку массива? Armen Общие вопросы Javascript 3 12.10.2014 20:17
как найти нужный объект? `p r o x y jQuery 2 05.05.2009 01:12
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53