Привет! Я пытаюсь создать объект с именем и идентификатором пользователя для каждой службы. Я хочу, чтобы объект выглядел следующим образом:
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, ammount: 250000 },
{ userid: 4, providerId: 3, ammount: 280900 },
{ userid: 6, providerId: 3, ammount: 31000 },
{ userid: 2, providerId: 2, ammount: 58600 },
{ userid: 3, providerId: 1, ammount: 13000 },
{ userid: 5, providerId: 2, ammount: 5000 },
{ userid: 3, providerId: 3, ammount: 59900 },
{ userid: 6, providerId: 3, ammount: 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.ammount });
}
function getMaxUserId(providerId) {
return Math.max(...getUserId(providerId));
}
providers.forEach(prov => {
object[prov.name] = getUserId(prov.id);
})
как вы можете видеть, сначала я фильтрую весь массив в поисках поставщиков с определенным providerId, затем создаю новый массив с функцией map, заполненной всеми «ammounts» для этого конкретного поставщика, и, наконец, я ищу максимальное количество этого массива,все это прекрасно работает, возвращает правильную максимальную сумму для каждого провайдера, НО я также хочу получить идентификатор пользователя, который платит больше всего за каждого провайдера
на самом деле я получаю свой объект следующим образом:
[
{name: Netflix, user: 250000},
{name: Comcast, user: 58600},
{name: Verizon, user: 280900}
]
и мне нужно это:
[
{name: Netflix, user: 1},
{name: Comcast, user: 2},
{name: Verizon, user: 4}
]