Вычисляемое значение ключа в объект
Здравствуйте.
Буду очень признателен, если подскажете в какую сторону копать или может дадите решение моей проблемы Есть массив объектов:
[{
fio: "Меремьянина Наталья Владимировна",
level: "Рыцарь",
exp: 1600,
money: 100
},
{
fio: "Матюшенок Юлия Олеговна",
level: "Рыцарь",
exp: 1500,
money: 100
},
{
fio: "Подгорнова Евгения Юрьевна",
level: "Рыцарь",
exp: 1500,
money: 100
},
{
fio: "Гуреева Маргарита Валерьевна",
level: "Рыцарь",
exp: 1500,
money: 100
},
{
fio: "Мелядин Павел Сергеевич",
level: "Ветеран",
exp: 1450,
money: 200
}]
Мне необходимо в каждый объект добавить ключ со значением занимаемого места. Место вычисляется по ключам exp и money. Если у нескольких объектов значения money и exp одинаковые, то место должно быть одно Должно получиться так:
[{
place: 1,
fio: "Меремьянина Наталья Владимировна",
level: "Рыцарь",
exp: 1600,
money: 100
},
{
place: 2,
fio: "Матюшенок Юлия Олеговна",
level: "Рыцарь",
exp: 1500,
money: 100
},
{
place: 2,
fio: "Подгорнова Евгения Юрьевна",
level: "Рыцарь",
exp: 1500,
money: 100
},
{
place: 2,
fio: "Гуреева Маргарита Валерьевна",
level: "Рыцарь",
exp: 1500,
money: 100
},
{
place: 3,
fio: "Мелядин Павел Сергеевич",
level: "Ветеран",
exp: 1450,
money: 200
}]
Заранее благодарю за любую помощь! |
AlexandrDr,
<script>
let ar = [{
fio: "Меремьянина Наталья Владимировна",
level: "Рыцарь",
exp: 1600,
money: 100
},
{
fio: "Матюшенок Юлия Олеговна",
level: "Рыцарь",
exp: 1500,
money: 100
},
{
fio: "Подгорнова Евгения Юрьевна",
level: "Рыцарь",
exp: 1500,
money: 100
},
{
fio: "Гуреева Маргарита Валерьевна",
level: "Рыцарь",
exp: 1500,
money: 100
},
{
fio: "Мелядин Павел Сергеевич",
level: "Ветеран",
exp: 1450,
money: 200
}
];
ar.reduce((a, b) => {
let { exp, money } = b;
if (!a[[exp, money]]) a[[exp, money]] = ++a.count;
b.place = a[[exp, money]];
return a
}, { count: 0 });
document.write(`<pre>${JSON.stringify(ar, "", 2)}</pre>`)
</script>
|
рони,
Огромное вам спасибо! |
| Часовой пояс GMT +3, время: 08:21. |