次のオブジェクトの配列を考えてみましょう:
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} ]
最初の試行には値の反復とプッシュが含まれる可能性がありますが、より効率的なアプローチには 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}; });
このメソッドは、キーが重複したキー値を表し、値がそれらの合計を表す Map に配列を縮小します。 。その後、マップは読みやすくするためにオブジェクトの配列に変換されます。
以上が一致するキーを持つ JavaScript オブジェクトを効率的にマージし、それらの値を合計する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。