gpt4 book ai didi

javascript - 如何通过操作特定键从对象创建 HashMap

转载 作者:行者123 更新时间:2023-12-03 02:57:16 24 4
gpt4 key购买 nike

尝试了几天来操作一些 JSON 数据响应。如何根据以下内容创建 HashMap ?

var jsonObject = JSON.parse(xhr.responseText); //response that parced

用于搜索“volvo、opel、honda。解析后,它返回每个用户的索引,如下所示(jsonObject.length在每个不同的搜索中都会发生变化):

[{user: 1, car: volvo, score:7, time: "some time"},{user: 2, car: volvo, score:8, time: "some time"},{user: 3, car: volvo, score:9, time: "some time"},{user: 3, car: opel, score:6, time: "some time"},{user: 3, car: honda, score:8, time: "some time"},{user: 4, car: volvo, score:6, time: "some time"},{user: 4, car: opel, score:7, time: "some time"},{user: 5, car: honda, score:8, time: "some time"}]

我希望输出是这样的:

[{1:[7]},{2:[8]},{3:[9,6,8]},{4:[6,7]},{5:[8]}]

最佳答案

您可以使用一个对象来减少数组并收集每个用户的所有分数,以确保您拥有唯一的用户 ID 作为键

const jsonObject = [
{user: 1, car: 'volvo', score:7, time: "some time"}
, {user: 2, car: 'volvo', score:8, time: "some time"}
, {user: 3, car: 'volvo', score:9, time: "some time"}
, {user: 3, car: 'opel', score:6, time: "some time"}
, {user: 3, car: 'honda', score:8, time: "some time"}
, {user: 4, car: 'volvo', score:6, time: "some time"}
, {user: 4, car: 'opel', score:7, time: "some time"}
, {user: 5, car: 'honda', score:8, time: "some time"}
]

const results = jsonObject.reduce((map, obj) => {
// set a new key based on the user id if it doesn't exist
if (!map.has(obj.user)) {
map.set(obj.user, [])
}
// add to the users scores to the users score
map.get(obj.user).push(obj.score)
// return the accumulator
return map
}, new Map)

for (let [key, value] of results.entries()) {
console.log({
key,
value
})
}
<script src="https://codepen.io/synthet1c/pen/KyQQmL.js"></script>

关于javascript - 如何通过操作特定键从对象创建 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47569647/

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