Как я могу вычесть и суммировать результаты всех массивов в массиве

1

У меня есть несколько массивов в массиве:

([[10,0],[3,5],[5,8]])

Я пытаюсь вычесть все внутренние массивы a-b, а затем суммировать результаты (пример: 10 - 0 = 10, 3-5 = -2, 5-8 = -3, 10+ (-2) + ([CN01 ]) = 5;

Моя попытка:

 var el;
 return array.reduce((a, b) => a - b );

Но мой результат вышел Нан, теперь я понял, в моем коде я хочу, чтобы массив подстроки из массива - плохая идея. Я знаю, как сделать это с помощью for или что - то подобное, на мой вопрос:

как я могу это сделать с помощью reduce или другого "современного" метода?

Спасибо за помощь.

PS извините за умение моего английского;)

Теги:
arrays
reduce

5 ответов

4

Вы можете использовать метод reduce() следующим образом.

var data = [[10,0],[3,5],[5,8]]
var result = data.reduce((r, e) => r + (e[0] - e[1]), 0);
console.log(result)
1

Гибкое решение, размер вложенных массивов не имеет значения, он все равно вернет правильный результат.

const count = (arr) => arr.reduce((s, v) => {
        s += v.reduce((a,b) => a - b);
        return s;
      }, 0);

let arr1 = [ [10, 0], [3, 5], [5, 8] ],
    arr2 = [ [5, 4, 1], [3, 5, 5], [5, 8] ];
    
console.log(count(arr1));
console.log(count(arr2));
0

Что-то вроде этого? Вы были близки, но обязательно должны иметь начальное значение 0 и разыменовать внутренние массивы в a и b следующим образом:

var array = [[10,0],[3,5],[5,8]];

var result = array.reduce((prev, [a, b]) => prev + (a - b), 0);

console.log(result);
0

Вы можете уменьшить внешний и внутренний массивы.

var array = [[10, 0], [3, 5], [5, 8]],
    result = array.reduce(function (r, a) {
        return r + a.reduce(function (x, y) {
            return x - y;
        })
    }, 0);

console.log(result);
0
const arr = ([[10,8],[3,5],[5,8]]);
arr.map(pair => pair[0] - pair[1]).reduce((a,b) => a + b)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню