Я получил массив, содержащий такие объекты:
[
{
"id": 91,
"factor": 2,
"title": "Test Product",
"price": 50,
"interval": 1,
"setup": 0,
"optional": false
},
{
"id": 92,
"factor": 1,
"title": "Another Test Product",
"price": 95,
"interval": 1,
"setup": 99,
"optional": true
},
{
"id": 93,
"factor": 1,
"title": "Just Another Test Product",
"price": 12,
"interval": 1,
"setup": 0,
"optional": false
}
]
Хорошо, теперь я хотел бы создать сумму для:
- Настройка (всего)
- Цена (всего)
- Цена на все товары по интервалам (сгруппировать по 1,2,3,4, ...)
Пока я использую вычисленные значения для каждой задачи:
setupTotal: function () {
return this.products.reduce ((acc, product) => acc + (parseFloat (product.setup) * parseFloat (product.factor)), 0);
},
и
monthlyCostsTotal: function () {
let sum = 0;
this.products.forEach (function (product) {
if (product.interval == 1) {
sum += (parseFloat (product.price) * parseFloat (product.factor));
}
});
return sum;
},
и
setupOptional: function () {
let sum = 0;
this.products.forEach (function (product) {
if (product.optional) {
sum += (parseFloat (product.setup) * parseFloat (product.factor));
}
});
return sum;
},
Но, конечно, это не оптимальный вариант, потому что я перебираю массив снова и снова.
Итак, мой вопрос: как я могу создать более эффективный способ суммирования значений по:
- Цена всего
- Цена (только по желанию)
- Всего наладки
- Настройка (только опционально)
- Цена по интервалу