Как исключить совпадение значении массивов суммируя числовые значения в массиве?
Есть (родитель) массив, в котором есть массивы. Значения у массивов есть одинаковые (первые два значения), третье значение value. Как найти все такие совпадения и объединить в один, суммируя только третье значение, value?
То что есть:
[
['Quebec', 'Bloc Quebecois', 1],
['Quebec', 'Bloc Quebecois', 3],
['Bloc Quebecois', 'Male', 3],
['Quebec', 'Conservative', 5],
['Conservative', 'Male', 5],
['Quebec', 'Liberal', 7],
['Liberal', 'Male', 7],
['Quebec', 'NDP', 27],
['NDP', 'Female', 27],
['Quebec', 'NDP', 32]
]
Надо что бы это стало таким:
[
['Quebec', 'Bloc Quebecois', 4],
['Bloc Quebecois', 'Male', 3],
['Quebec', 'Conservative', 5],
['Conservative', 'Male', 5],
['Quebec', 'Liberal', 7],
['Liberal', 'Male', 7],
['Quebec', 'NDP', 59],
['NDP', 'Female', 27]
]
Ответы (1 шт):
Автор решения: Дмытрык
→ Ссылка
const arr = [
['Quebec', 'Bloc Quebecois', 1],
['Quebec', 'Bloc Quebecois', 3],
['Bloc Quebecois', 'Male', 3],
['Quebec', 'Conservative', 5],
['Conservative', 'Male', 5],
['Quebec', 'Liberal', 7],
['Liberal', 'Male', 7],
['Quebec', 'NDP', 27],
['NDP', 'Female', 27],
['Quebec', 'NDP', 32]
]
const values = {}
const separator = '=>'
arr.forEach(el => {
const key = el[0] + separator + el[1]
if (values[key] === undefined) {
values[key] = el[2]
return
}
values[key] += el[2]
})
const result = Object.entries(values).map(el => {
const s = el[0].split(separator)
return [...s, el[1]]
})
console.log(result)
