Как исключить совпадение значении массивов суммируя числовые значения в массиве?

Есть (родитель) массив, в котором есть массивы. Значения у массивов есть одинаковые (первые два значения), третье значение 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)

→ Ссылка