У меня есть 2D-массив, подобный этому:
[[ONE,1],[QUARTER,0.25],[QUARTER,0.25]]
Я хочу, чтобы оно стало:
[[ONE,1],[QUARTER,0.5]]
Я пытался использовать array.IndexOf, но не повезло
ONE,1,QUARTER,0.25,QUARTER,0.25
В отличие от заголовка вашего вопроса, ваш пример предполагает, что вы хотите sum , а не filter, массив.
let arr = [['ONE', 1], ['QUARTER', 0.25], ['QUARTER', 0.25]]; let sums = arr.reduce((sums, item) => { let found = sums.find(([key]) => key === item[0]); if (found) found[1] += item[1]; else sums.push(item); return sums; }, []); console.log(sums);
Вы можете уменьшить массив, посмотрев, существует ли тот же ключ.
var array = [['ONE', 1], ['QUARTER', 0.25], ['QUARTER', 0.25]], result = array.reduce((r, [key, value]) => { var temp = r.find(a => a[0] === key); if (temp) { temp[1] += value; } else { r.push([key, value]); } return r; }, []); console.log(result);