我有一组对象。
对象看起来像这样:
0: Object
_id: "555baa9a034de05173e9fee4"
name: "Smirnoff Vodka"
number: 120
priceQuantity: 195
subtotal: 195
taxes: Array[0]
现在,从所有物品中,我必须计算每次总销售额的总和,以便我知道每件物品的总销售额。
即推送这些数组中的值
itemAmount=[];
itemName=[];
阵列将会非常大,因此我需要它同时非常高效。
此外,在计算总金额之前,我必须迭代税收数组,以便添加所有税金。什么是有效的方法呢?
答案 0 :(得分:1)
您可以尝试这样的事情:
var itemAmount = [], itemName = [];
myArray.map(function(obj){
var total = obj.subtotal;
for (var i = 0; i < obj.taxes.length; i++) {
total += obj.taxes[i];
}
var index = itemName.indexOf(obj.name);
if (index === -1) {
itemAmount.push(total);
itemName.push(obj.name);
} else {
itemAmount[index] += total;
}
});
答案 1 :(得分:0)
如果每次打开应用程序时都需要这些值,最好不要计算这些值,而是将它们存储在数据库中。 对于每次购买,只需使用当前价格调整totalSale值,并使用当前价格和增值税更新totalSaleVAT。
除了更容易之外,这样做也不会在价格变化时提供错误的数据。因为当价格上涨或下跌时,售出的价值不会受到影响。
答案 2 :(得分:0)
为什么你不使用像dinamic分配这样的javascript的好东西而不是那些坏的东西?
我会为产品设置一个对象:
var Products = {}
然后设置条目如:
if(!products[WHATEVER])
products[WHATEVER] = [];
var temp = {};
temp.name = "asdf";
temp....
products[WHATEVER].push(temp);
所以你有一个产品对象,你只需要使用你想要的任何产品的id,name或任何产品,这是产品条目的数组。
试试吧