gpt4 book ai didi

javascript - 根据用户id计算对象属性值

转载 作者:行者123 更新时间:2023-12-01 02:25:23 27 4
gpt4 key购买 nike

获得一个包含每个用户的用户 ID 和价格的对象,希望为每个用户创建一个新的对象/数组(无重复),并能够计算每个用户的价格总和。尝试将 Object.values() 与 map 和过滤器一起使用,但无法使其正常工作

{
"data": {
"item1": {
"price": "20",
"user": "user1"
},
"item2": {
"price": "10",
"user": "user2"
},
"item3": {
"price": "50",
"user": "user1"
}
}
}

输出类似这样的内容:

{
"users": {
"user1": {
"totalSum": "70",
},
"user2": {
"totalSum": "10",
}
}
}

我正在考虑使用 map 来呈现“用户”数据,也许数组会更好?

最佳答案

使用函数reduce

重要提示:属性 price 是一个字符串,此方法使用对象 Number 将该值转换为数字 1。

var obj = {  "data": {    "item1": {      "price": "20",      "user": "user1"    },    "item2": {      "price": "10",      "user": "user2"    },    "item3": {      "price": "50",      "user": "user1"    }  }};

var result = Object.keys(obj.data).reduce((a, k) => {
if (a.users[obj.data[k].user]) {
a.users[obj.data[k].user].totalSum += Number(obj.data[k].price);
} else {
a.users[obj.data[k].user] = {
"totalSum": Number(obj.data[k].price)
}
}

return a;
}, {
'users': {}
});

console.log(result);
.as-console-wrapper {
max-height: 100% !important; top: 0;
}

关于javascript - 根据用户id计算对象属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48856811/

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