sumElements

by Vladymyr Shevchuk

JavaScript

const sumElements = arr => {
  const numbers = arr.map(item => Number(item) || parseFloat(item));

  return numbers.reduce((accum, item) => {
    if (typeof item === 'number' && isFinite(item)) {
      accum += item;
    }
    return accum
  }, 0)
};


console.assert(sumElements([1, 2]) === 3, 'should return sum of the array elements');
console.assert(sumElements([Infinity, 1, 2]) === 3, 'should ignore -Infinity/Infinity');
console.assert(sumElements([NaN, 3, -1]) === 2, 'should ignore NaN');
console.assert(sumElements(['1px', 2, '0.5', 'm12', '0xf']) === 18.5, 'should convert string to number if it possible and return sum');