在 JavaScript 中使用共享键求和对象属性值
考虑以下 JavaScript 对象数组:
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 ];
目标是通过对相应的 val 值求和来合并重复的键,从而产生一个类似的数组this:
const 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}, ];
为了实现这一点,可以利用采用reduce和map方法的强大解决方案:
let counts = objArr.reduce((prev, curr) => { let count = prev.get(curr.key) || 0; prev.set(curr.key, curr.val + count); return prev; }, new Map()); let reducedObjArr = [...counts].map(([key, value]) => { return {key, value}; });
这种方法首先使用reduce创建一个Map,其中每个键代表原始数组中的唯一键,对应的值是具有相同键的所有 val 值的总和。
最后,在计数上调用 map 方法map 将其转换回具有所需合并值的对象数组。此代码的输出是reduceObjArr,其中包含所需的合并和求和值。
以上是如何在 JavaScript 中使用共享键求和对象属性值?的详细内容。更多信息请关注PHP中文网其他相关文章!