«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно объединить объекты JavaScript с соответствующими ключами и суммировать их значения?

Как эффективно объединить объекты JavaScript с соответствующими ключами и суммировать их значения?

Опубликовано в 2025-03-22
Просматривать:735

How to Efficiently Merge JavaScript Objects with Matching Keys and Sum Their Values?

слияние объектов с соответствующими свойствами в массивах javascript

рассмотрим следующий массив объектов:

objArr = [
    {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:42},
    {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78},
    {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23},
    {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:54}, //  

Наша цель состоит в том, чтобы объединить дубликаты клавиш и суммировать их соответствующие значения, что приводит к:

reducedObjArr = [
    {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:96},
    {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78},
    {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23}
]

, в то время как начальная попытка может включать в себя итерационные и толкающие значения, более эффективный подход включает использование встроенных функций JavaScript:

// Use a Map to count values with the same key
const counts = objArr.reduce((prev, curr) => {
  let count = prev.get(curr.key) || 0;
  prev.set(curr.key, curr.val   count);
  return prev;
}, new Map());

// Convert the Map back to an array of objects
const reducedObjArr = [...counts].map(([key, value]) => {
  return {key, value};
});

Этот метод уменьшает массив на карту, где ключи представляют собой дубликаты значений ключей, а значения представляют их суммы. Затем карта преобразуется обратно в массив объектов для читаемости.

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3