gpt4 book ai didi

javascript - For循环覆盖对象

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:06 25 4
gpt4 key购买 nike

这里遇到了一些麻烦。

我有一个充满对象的数组。这是我的输入

[
{ id: 1, colour: 'blue', count: 10 },
{ id: 1, colour: 'red', count: 12 },
{ id: 2, colour: 'red', count': 8 },
{ id: 2, colour: 'blue', count: 3 }
]

我的目标是对于数组中输入的每个对象,根据 ID 进行解析并以更友好(对我来说)的格式进行传递。应该是这样的

{"id":1, "colour_count":{"blue":10,"red":12}}
{"id":2, "colour_count":{"blue":8,"red":3}}

当我获得更多 ID 时,依此类推。

这是我当前的代码。在本例中,数组是 i。我的问题是我覆盖了数据对象。

let data = {
colour_count: {}
}

for( var i=0; i<row.length; i++) {
(function(i) {
data["colour_count"][row[i].colour] = row[i].count
data["id"] = row[i].id
})(i)
}

有人可以帮助我达到我想要的输出吗?

最佳答案

您可以通过两部分来完成此操作。首先,根据id创建一个hash,这样很容易查找和设置:

const hash = rows.reduce((result, { id, colour, count }) => {
if(!result[id]){
result[id] = {
id,
colour_count: {}
}
}
result[id].colour_count[colour] = count
return result
}, {})

然后将值映射到数组

const arr = Object.values(hash)

工作来源:

const rows = [
{ id: 1, colour: 'blue', count: 10 },
{ id: 1, colour: 'red', count: 12 },
{ id: 2, colour: 'red', count: 8 },
{ id: 2, colour: 'blue', count: 3 }
]

const hash = rows.reduce((result, { id, colour, count }) => {
if(!result[id]){
result[id] = {
id,
colour_count: {}
}
}
result[id].colour_count[colour] = count
return result
}, {})

const arr = Object.values(hash)
console.log(arr)

关于javascript - For循环覆盖对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53509408/

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