我有以下输出需要解析,并且必须计算出总和才能以7号角显示在前端:-
{
"cart": [
{
"id": 28,
"Name": "Retin a gel",
"Price": 50,
"Quantity": 3,
"Cost": 150,
"createdAt": "2019-03-15 02:44:55.047 +00:00",
"updatedAt": "2019-03-15 02:45:04.574 +00:00"
}
]
}
in想要解析此输出并计算出总计,将打字稿中所有总费用中的哪个总和作为函数显示在前端?可以告诉我如何设计这种功能吗?
答案 0 :(得分:4)
您可以reduce
进行如下破坏:
let totalSum = yourObject.cart.reduce((acc, { Cost }) => acc + Cost, 0);
答案 1 :(得分:2)
object.cart.reduce((acc, item) => acc + item.Cost, 0)
只需用要解析的对象的名称替换对象,它就可以工作。
答案 2 :(得分:2)
您可以这样做,希望对您有帮助
let total = 0;
let JsonRes= "{
"cart": [
{
"id": 28,
"Name": "Retin a gel",
"Price": 50,
"Quantity": 3,
"Cost": 150,
"createdAt": "2019-03-15 02:44:55.047 +00:00",
"updatedAt": "2019-03-15 02:45:04.574 +00:00"
}
]
}"
for (let i = 0; i < JsonRes.cart.length(); i++) {
total + = +JsonRes.cart[i].Cost;
}
console.log(total);
答案 3 :(得分:0)
@ yash-rami答案很好,但是如果您正在寻找可以传递购物车详细信息的函数,则可以创建如下函数:
public calculateTotalCost( cart: any[] ) {
let totalCost = 0;
for (let cartItemIndex = 0; cartItemIndex < cart.length(); cartItemIndex++) {
totalCost + = +cart[ cartItemIndex ].Cost;
}
return totalCost;
}
现在,您拥有购物车数据的地方,可以将其传递给此功能,并获得所需的结果。
例如,您所需的数据存储在orderDetails变量中,然后:
let orderDetails = {
"cart": [
{
"id": 28,
"Name": "Retin a gel",
"Price": 50,
"Quantity": 3,
"Cost": 150,
"createdAt": "2019-03-15 02:44:55.047 +00:00",
"updatedAt": "2019-03-15 02:45:04.574 +00:00"
}
]
};
要存储可以在Angular 7模板中显示以在屏幕上显示输出的总成本,假设您具有变量名称totalCostCalculated,则:
let totalCostCalculated = 0;
现在在要显示到模板之前要计算最终结果的位置,请使用以下代码:
this.totalCostCalculated = this.calculateTotalCost( this.orderDetails.cart );
现在您可以在模板中显示totalCostCalculated值,例如:
<h1>{{totalCostCalculated}}</h1>
希望有帮助。
答案 4 :(得分:0)
foreach难道不是很简单!
let total = 0;
let JsonRes= `{
"cart": [
{
"id": 28,
"Name": "Retin a gel",
"Price": 50,
"Quantity": 3,
"Cost": 150,
"createdAt": "2019-03-15 02:44:55.047 +00:00",
"updatedAt": "2019-03-15 02:45:04.574 +00:00"
},
{
"id": 28,
"Name": "Retin a gel",
"Price": 50,
"Quantity": 3,
"Cost": 60,
"createdAt": "2019-03-15 02:44:55.047 +00:00",
"updatedAt": "2019-03-15 02:45:04.574 +00:00"
}
]
}`;
var jsonParsed=JSON.parse(JsonRes);
jsonParsed.cart.forEach(x=>total +=x.Cost)
console.log(total);