我试图为每个服务创建一个包含名称和用户ID的对象,我希望该对象如下所示:
const object = {
name: Netflix, user: (user id who pays max price for this provider)
name: Comcast, user: (same)
name: Verizon, user: (same)
}
我已经尝试更改地图返回中的对象属性,但它不起作用。另外,我已经完成了对象的一半,我的意思是已经有了提供者名称,现在我需要其他键值对。
const services = [
{ userid: 1, providerId: 1, amount: 250000 },
{ userid: 4, providerId: 3, amount: 280900 },
{ userid: 6, providerId: 3, amount: 31000 },
{ userid: 2, providerId: 2, amount: 58600 },
{ userid: 3, providerId: 1, amount: 13000 },
{ userid: 5, providerId: 2, amount: 5000 },
{ userid: 3, providerId: 3, amount: 59900 },
{ userid: 6, providerId: 3, amount: 9500 }
]
const providers = [
{ id: 1, name: Netflix },
{ id: 2, name: Comcast },
{ id: 3, name: Verizon }
]
这是我的函数。
function getUserId(providerId) {
return services.filter(function(obj) {
if (obj.providerId == providerId)
return obj.providerId;
}).map(function(obj) { return obj.amount });
}
function getMaxUserId(providerId) {
return Math.max(...getUserId(providerId));
}
providers.forEach(prov => {
object[prov.name] = getUserId(prov.id);
})
如您所见,首先我会筛选整个数组,寻找特定providerId的提供商,然后使用map函数创建一个新数组,其中包含该特定提供商的所有“amounts”,最后我会在该数组中查找最大金额,这一切都有效,它将每个提供商的正确最大金额返回,但是我还想获取为每个提供商支付最多的用户id。
实际上,我是这样获取对象的:
[
{name: Netflix, user: 250000},
{name: Comcast, user: 58600},
{name: Verizon, user: 280900}
]
我需要这个:
[
{name: Netflix, user: 1},
{name: Comcast, user: 2},
{name: Verizon, user: 4}
]
obj.id
而不是obj.ammount
——就我所理解的目標而言,您的getUserId()
函数將ammount
映射到輸出Array
(我認為services
元素中的id
鍵引用用戶 ID,對吧?) - Oleg Valter is with Ukraine