gpt4 book ai didi

javascript - 我可以使用 reduce 将数组转换为具有自定义键并计算重复值的对象数组吗?

转载 作者:行者123 更新时间:2023-11-30 09:10:38 24 4
gpt4 key购买 nike

在我当前的代码中,我有一个名称数组,它通过 reduce() 变成一个对象,任何重复的名称都会增加一个计数值。

初始数组(nameArray):

["Name1","Name2","Name2","Name2","Name3","Name4","Name5"]

减少代码:

    const nameCount = nameArray.reduce((a, b) => {
a[b] = (a[b] || 0) + 1
return a
}, {})

减少输出:

{"Name1":1,"Name2":3,"Name3":1,"Name4":1,"Name5":1}

我想把它的格式改成这样:

[
{
"name": Name1,
"count": 1
},
{
"name": Name2,
"count": 3
},
{
"name": Name3,
"count": 1
}
...etc
]

仅使用 reduce 就可以做到这一点吗?最好、最有效的方法是什么?我已经尝试更改我的 reduce 代码,但无法使其正常工作,我对解决方案的搜索也没有任何结果。

感谢任何帮助!

最佳答案

您可以在 reduce 方法中创建所需的数组,但效率不高,因为每次您都需要按 name 进行搜索以更新计数。

一种简单的方法是使用 Object.keys 方法。

var nameArray = ["Name1","Name2","Name2","Name2","Name3","Name4","Name5"]
const nameCount = nameArray.reduce((a, b) => {
a[b] = (a[b] || 0) + 1
return a
}, {})
console.log(Object.keys(nameCount).map(key => ({name : key, count: nameCount[key]})));

关于javascript - 我可以使用 reduce 将数组转换为具有自定义键并计算重复值的对象数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59355620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com