Добрый день. Пишу викторину. И призы за разную цену. Призы меняются, то их больше то меньше. Поэтому хотелось бы иметь общую функцию которая будет работать всегда.
Хотелось бы сделать шанс приза так - цем больше его цена от общий суммы тем меньше у него шансов.
Пример кода
const gift = [
{
name : "Ручка",
price : 12
},
{
name : "Телефон",
price : 2222
},
{
name : "Блокнот",
price : 33
},
{
name : "Альбом",
price : 120
},
{
name : "Книга",
price : 333
},
]
//общая сумма предметов
let allSum = gift.reduce((a, b) => a + (b["price"] || 0), 0);
console.log(allSum);
gift.sort((a, b) => b.price - a.price );
gift.forEach((e, i) => {
gift[i].chance = ( 100 / (allSum / e.price) ).toFixed(4);
});
Получаем проценты от общей суммы
[
{"name":"Телефон","price":2222,"chance":"81.6912"},
{"name":"Книга","price":333,"chance":"12.2426"},
{"name":"Альбом","price":120,"chance":"4.4118"},
{"name":"Блокнот","price":33,"chance":"1.2132"},
{"name":"Ручка","price":12,"chance":"0.4412"}
]
А хотелось бы видеть у телефона самую низкий шанс. Нечего готового нагуглить не смог.