如何编写用于遍历打字稿中的列表的函数?

时间:2019-03-15 04:12:01

标签: javascript arrays json angular typescript

我有以下输出需要解析,并且必须计算出总和才能以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想要解析此输出并计算出总计,将打字稿中所有总费用中的哪个总和作为函数显示在前端?可以告诉我如何设计这种功能吗?

5 个答案:

答案 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);