комбинирование значений свойства с однокномазкой в массиве объектов
дал массив объектов 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