javascript — сумма сходных ключей в массиве объектов

Суммируйте подобные ключи в массиве объектов

Вот подход, который должен работать для любого количества свойств в ваших объектах (они должны быть одинаковыми в обоих объектах, чтобы они могли «группироваться»). Он включает в себя итерацию по вашему массиву и преобразование его в объект, содержащий пары ключ-значение Каждый ключ нового объекта является строкой всех значений вашего свойства, и поэтому, если ваш ключ объекта уже существует, вы знаете, что он является дубликатом, что означает, что вы можете добавить текущее значение объекта к хранимому объекту. Наконец, вы можете использовать Object.values() чтобы получить совокупные объекты, установленные в вашем объекте с уменьшенной парой ключ-значение:

 const arr = [{'name':'P1','value':150},{'name':'P1','value':150},{'name':'P2','value':200},{'name':'P3','value':450}]; const res = Object.values(arr.reduce((acc, o) ={amp}gt; { const key = Object.entries(o).join('-'); acc[key] = (acc[key] || {...o, value: 0}); return (acc[key].value  = o.value, acc); }, {})); console.log(res); 

Если вы не можете поддерживать Object.entries() , вы можете заменить этот вызов JSON.stringify() :

 const arr = [{'name':'P1','value':150},{'name':'P1','value':150},{'name':'P2','value':200},{'name':'P3','value':450}]; const res = Object.values(arr.reduce((acc, o) ={amp}gt; { const key = JSON.stringify(o); acc[key] = (acc[key] || {...o, value: 0}); return (acc[key].value  = o.value, acc); }, {})); console.log(res); 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector