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

Как суммировать значения дублирования клавиш в массиве JavaScript объектов?

Опубликовано в 2025-02-06
Просматривать:993

How to Sum Values of Duplicate Keys in a JavaScript Array of Objects?

комбинирование значений свойства с однокномазкой в ​​массиве объектов

дал массив объектов 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} // <- duplicate key
]

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

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}
]

] Решение с использованием Map и Reduce ]

вместо итерации и нажимания = = [ {Ключ: «Пн 23 сентября 2013 г. 00:00:00 GMT-0400», Val: 42}, {Ключ: «Пн 24 сентября 2013 г. 00:00:00 GMT-0400», Val: 78}, {ключ: 'Mon Sep 25 2013 00:00:00 GMT-0400', Val: 23}, {Ключ: «Пн 23 сентября 2013 г. 00:00:00 GMT-0400 ', Val: 54} // & lt;- дубликат ]; // конвертировать данные в карту с уменьшением const counts = objarr.reduce ((prev, curr) = & gt; { const count = prev.get (curr.key) || 0; prev.set (curr.key, curr.val count); возврат }, new Map ()); // карта считает объект обратно в массив const ReducedObjarr = [... counts] .map ([[key, value]) = & gt; { return {key, значение} }); console.log (ReducedObjarr);

const 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} // <- duplicate key
];

// Convert data into a Map with reduce
const counts = objArr.reduce((prev, curr) => {
  const count = prev.get(curr.key) || 0;
  prev.set(curr.key, curr.val   count);
  return prev;
}, new Map());

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

console.log(reducedObjArr); 
]
Последний учебник Более>

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

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

Copyright© 2022 湘ICP备2022001581号-3