我有一个对象数组,在其中创建需要在html中显示的属性。这是数组中对象之一的结构
{
"functional_id": "201911291131250012400000SD4AYAA1",
"transactions": [
{
"quantity": 2,
"price": 140,
"item": {
"name": "Carton de 10 coffrets",
"description": "+ 2 recharges d'argile offertes",
"product": {
"name": "Coffret empreinte rouge"
}
},
"amount": 280
},
{
"quantity": 2,
"price": 17,
"item": {
"name": "1 lanterne d'accueil + 1 accroche porte",
"product": {
"name": "Lanterne d'accueil",
"description": "Lors d'une euthanasie, cette affichette verticale auto-éclairée par bougie LED, est disposée à l’accueil. Elle montre l’importance de ce moment pour votre clinique. <br /> Les accroches porte déposés sur les poignées des salles de consultation invitent au calme."
}
},
"amount": 34
},
{
"quantity": 1,
"price": 0,
"item": {
"name": "Petit modèle",
"description": "Par 25",
"product": {
"name": "Sacs blancs",
"description": "Pour les crémations Plurielles"
}
},
"amount": 0
},
{
"quantity": 1,
"price": 0,
"item": {
"name": "Moyen modèle",
"description": "Par 20",
"product": {
"name": "Sacs blancs",
"description": "Pour les crémations Plurielles"
}
},
"amount": 0
},
{
"quantity": 1,
"price": 0,
"item": {
"name": "Grand modèle",
"description": "Par 10",
"product": {
"name": "Sacs blancs",
"description": "Pour les crémations Plurielles"
}
},
"amount": 0
},
{
"quantity": 2,
"price": 0,
"item": {
"product": {
"name": "Carnet de conventions"
}
},
"amount": 0
}
],
"date": "29/11/2019",
"order_number": "113125"
}
这时,我为每个“交易”创建一个属性“金额”,以计算购买每种产品的总金额。
public inicializeData() {
this.loaderService.eLoader.emit(true);
this.cartsSubscription = this.cartsService.getCarts().subscribe(carts => {
this.orders = carts;
this.orders.forEach(cart => {
const day = cart.functional_id.substring(6, 8);
const month = cart.functional_id.substring(4, 6);
const year = cart.functional_id.substring(0, 4);
cart.date = day + '/' + month + '/' + year;
cart.order_number = cart.functional_id.substring(8, 14);
cart.transactions.forEach(item => {
item.amount = item.quantity * item.price;
});
});
this.load = true;
this.loaderService.eLoader.emit(false);
});
}
问题是我还需要所有交易的总计,但我无法计算该总计。首先,我声明一个值为0的类变量,然后在计算“ item.amount”的点上将它们全部加起来。
public amount = 0;
public inicializeData() {
this.loaderService.eLoader.emit(true);
this.cartsSubscription = this.cartsService.getCarts().subscribe(carts => {
this.orders = carts;
this.orders.forEach(cart => {
const day = cart.functional_id.substring(6, 8);
const month = cart.functional_id.substring(4, 6);
const year = cart.functional_id.substring(0, 4);
cart.date = day + '/' + month + '/' + year;
cart.order_number = cart.functional_id.substring(8, 14);
cart.transactions.forEach(item => {
item.amount = item.quantity * item.price;
this.amount += item.amount;
});
});
this.load = true;
this.loaderService.eLoader.emit(false);
});
}
而且我看到我得到的是所有交易的总数。这是不希望的。
我了解这是一个范围问题。但是我也试图在最后一个forEach中声明该变量,但是它也不起作用。
public inicializeData() {
this.loaderService.eLoader.emit(true);
this.cartsSubscription = this.cartsService.getCarts().subscribe(carts => {
this.orders = carts;
this.orders.forEach(cart => {
const day = cart.functional_id.substring(6, 8);
const month = cart.functional_id.substring(4, 6);
const year = cart.functional_id.substring(0, 4);
cart.date = day + '/' + month + '/' + year;
cart.order_number = cart.functional_id.substring(8, 14);
cart.transactions.forEach(item => {
item.amount = item.quantity * item.price;
let overallAmount = 0;
overallAmount += item.amount;
});
});
this.load = true;
this.loaderService.eLoader.emit(false);
console.log(JSON.stringify(this.orders));
});
}
我需要的是,在示例对象中,我可以创建一个属性,该属性是所有item.amount的总和(在这种情况下,它将是totalAmount = 314)。
有人让我明白我的错误。预先非常感谢
在此行this.amount += item.amount;
尝试做
const cal = item.quantity * item.price;
item.amount=cal
this.amount += cal;
或
var amount=[]
const cal = item.quantity * item.price;
item.amount=cal
var.push(cal)
amount=amount.reduce((a,b)=>{return a+b})
如果您希望向对象添加物业交易金额,则可以使用此
t=0
x= cart.transactions.filter(x=>cart['transac-amount']=t+=x.amount)
console.log(cart)
它将向您的对象添加交易金额