javascript - 如果字典中的所有其他元素都相同,则对计数求和

标签 javascript

我有一个字典数组,如下所示:

[{name:'v1', count:1}, {name:'v1', count:1}, {name:'v2', count:1}, {name:'v2', count:1}]

如果名称相同,如何将这些计数相加并形成字典,如下所示:

[{name:'v1', count:2}, {name:'v2', count:2}]

最佳答案

解决方案依赖Array.prototype.reduce , Object.entriesArray.protype.map :

const data = [{name:'v1', count:1}, {name:'v1', count:1}, {name:'v2', count:1}, {name:'v2', count:1}]

const result = Object.entries(data.reduce(
  (acc, { name, count }) => {
    acc[name] = count + (acc[name] || 0)
    return acc
  },
  {}
)).map(([name, count]) => ({ name, count }))

console.log(result)

以下是将同一解决方案分为多个部分,以便于理解:

const data = [{name:'v1', count:1}, {name:'v1', count:1}, {name:'v2', count:1}, {name:'v2', count:1}]

const r1 = data.reduce(
  (acc, { name, count }) => {
    acc[name] = count + (acc[name] || 0)
    return acc
  },
  {}
)
console.log(r1)

const r2 = Object.entries(r1)
console.log(r2)

const r3 = r2.map(([name, count]) => ({ name, count }))
console.log(r3)

关于javascript - 如果字典中的所有其他元素都相同,则对计数求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59669878/

相关文章:

javascript - 有没有办法让这个 slider 只滑动 33% 而不是 100%

javascript - Potree/Three.js 测量问题

javascript - PHP 或 JavaScript/jQuery 中的 Future timeago 方法

javascript - nightmare js浏览解析多个站点

javascript - Bootstrap : Twitter Bootstrap Modal not hidden when page loaded

javascript - Express 路由器匹配参数

javascript - 如何实现 Sencha Touch 项目的文件夹结构?

javascript - 如何在cypress(vscode)中进行自定义命令实现

javascript - 链接标签不起作用,并且在弹出对话框中有额外的边框

c# - OnClientClick 在 ValidationGroup 之前触发