Вычисляемое значение ключа в объект
Здравствуйте.
Буду очень признателен, если подскажете в какую сторону копать или может дадите решение моей проблемы Есть массив объектов: [{ 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, время: 19:19. |