У меня есть несколько массивов в массиве:
([[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 извините за умение моего английского;)
Вы можете использовать метод reduce()
следующим образом.
var data = [[10,0],[3,5],[5,8]]
var result = data.reduce((r, e) => r + (e[0] - e[1]), 0);
console.log(result)
Гибкое решение, размер вложенных массивов не имеет значения, он все равно вернет правильный результат.
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
и разыменовать внутренние массивы в a
и b
следующим образом:
var array = [[10,0],[3,5],[5,8]];
var result = array.reduce((prev, [a, b]) => prev + (a - b), 0);
console.log(result);
Вы можете уменьшить внешний и внутренний массивы.
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);
const arr = ([[10,8],[3,5],[5,8]]);
arr.map(pair => pair[0] - pair[1]).reduce((a,b) => a + b)