Сравнить числовые значения массивов

Есть например 2 массива

let a = [1,2,3, 'hello',4,5]
    b = [1,2,3, true, 4, undefined, 6] 

как сделать функцию которая сравнит в них числовые значения и выведет то которое больше по сумме.


Ответы (2 шт):

Автор решения: Алексей Шиманский

Применяем к обоим массивам следующее:

  • метод filter, чтобы отфильтровать все не числа, применяя внутри метод typeof на тип number.

  • К отфильтрованным данным применяем метод reduce(), чтобы сакуммулировать все значения в одном в виде суммы.

  • Результат применения одинаковых методов сравниваем и узнаём выводим результат

→ Ссылка
Автор решения: wololo

Попробуйте так:

let a = [1,2,3, 'hello',4,5];
let b = [1,2,3, true, 4, undefined, 6];

function sum(arr)
{
    return arr.reduce((prev, val) => Number.isFinite(val) ? prev + val : prev, 0);
}

let res = Math.max(sum(a), sum(b));
console.log(res);

Функцию sum можно переписать так:

function sum(arr)
{
    //В res_sum будем накапливать сумму.
    let res_sum = 0;
    //Перебираем элементы массива
    for (let i = 0; i < arr.length; ++i)
        //Если элемент маcсива число, отличное от ±Infinity и NaN, то...
        if (typeof arr[i] === "number" && isFinite(arr[i]))
            res_sum = res_sum + arr[i];
    return res_sum;
} 
→ Ссылка