#javascript #arrays #object
#javascript #массивы #объект
Вопрос:
Для следующего массива:
[{a:1,b:1},{a:5,b:2},{a:10,b:2},{a:20,b:3}]
Как мне получить новый массив, который объединяет элементы с одинаковым значением свойства b
и суммирует значение свойства a
? В этом случае я надеюсь получить следующий результат:
[{a:1,b:1},{a:(5 10),b:2},{a:20,b:3}]
Ответ №1:
Вы могли бы использовать комбинацию Array.reduce и Array.find следующим образом:
const result = arr.reduce((acc, cur) => {
const prev = acc.find((item) => item.b === cur.b)
if (prev) {
prev.a = cur.a
} else {
acc.push(cur)
}
return acc
}, [])