Правильно ли написан код или его нужно как то переписать в ООП стиль?
На странице продукта есть компонент React с таблицой с ценами в зависимости от веса фасовки и коэффицента цены. Для того чтобы не дублировать input создал массив для обхода по нему
const valkoef =
[
{
weight: 0.1,
koef: 1.7,
calcDiscountPrice,
calcBasicPrice
},
{
weight: 0.25,
koef: 1.25,
calcDiscountPrice,
calcBasicPrice
},
{
weight: 0.5,
koef: 1.05,
calcDiscountPrice,
calcBasicPrice
},
{
weight: 0.75,
koef: 1.1,
calcDiscountPrice,
calcBasicPrice
},
{
weight: 1,
koef: 1,
calcDiscountPrice,
calcBasicPrice
},
{
weight: 0.025,
koef: 1.85,
calcDiscountPrice,
calcBasicPrice
},
]
product.basePrice = 700
const amountOfDiscount = 0.1
Функции calcDiscountPrice и calcBasicPrice считают цену со скидкой и цену базовую в зависмости от выбранной фасовки:
function calcDiscountPrice () {
return (Math.round(((this.weight * product.basePrice)* this.koef) - ((this.weight * product.basePrice)* this.koef) * amountOfDiscount))
}
function calcBasicPrice (){
return Math.round((this.weight * product.basePrice) * this.koef)
}
Прохожу по массиву:
{valkoef.map(item => (
<label className='priceTable__label'>
<input type="radio" name="options[packaging]" value={item.weight} data-koef={item.koef}></input>
<span>{item.calcDiscountPrice()} руб.</span> <span className='priceTable__weight'> / {item.weight} кг </span>
<span className='priceTable__undiscounted'>{item.calcBasicPrice()} руб.</span>
</label>
))}
Вот что в итоге должно получиться:
И все вроде бы работает, но меня смущает правильность написания кода. Как его можно переписать по правилам хорошего тона? Может создать класс и в ней написать два метода для подсчета. а в объекте уже вызывать эти методы, только непонятно как вызывать эти методы для каждого объекта в массиве. Как вы бы переписали код следуя правилам хорошего тона?
