gpt4 book ai didi

javascript - 有效地求和不同的值

转载 作者:行者123 更新时间:2023-11-30 14:04:42 25 4
gpt4 key购买 nike

我得到了一个包含如下对象的数组:

[
{
"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;
},

但这当然不是最佳选择,因为我一遍又一遍地遍历数组。

所以我的问题是:如何通过以下方式创建更有效的求和值方法:

  • 总价
  • 价格(可选)
  • 设置总计
  • 设置(仅可选)
  • 区间价格

最佳答案

您可以根据需要取一个对象并求和。

var data = [{ 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 }],
result = data.reduce((r, { factor, price, interval, setup, optional }) => {
r.price += factor * price;
r.setup += factor * setup;
if (optional) {
r.price_optional += factor * price;
r.setup_optional += factor * setup;
}
r.interval[interval] = (r.interval[interval] || 0) + factor * price;
return r;
}, { price: 0, price_optional: 0, setup: 0, setup_optional: 0, interval: {} });

console.log(result);

关于javascript - 有效地求和不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55668764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com