【问题标题】:How to write an function for traversing through a list in typescript?如何编写一个函数来遍历打字稿中的列表?
【发布时间】:2019-03-15 04:12:01
【问题描述】:

我有以下输出需要解析并且必须计算总数才能以 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"
        }
    ]
}

想要解析这个输出并计算 typescript 中所有总成本的总和,作为一个函数在前端显示它?有人能告诉我如何设计这样的功能吗?

【问题讨论】:

    标签: javascript arrays json angular typescript


    【解决方案1】:

    你可以像这样解构reduce

    let totalSum = yourObject.cart.reduce((acc, { Cost }) => acc + Cost, 0);
    

    【讨论】:

    • res.reduce 不是函数显示
    • 编辑@Atulkumarsingh
    【解决方案2】:
    object.cart.reduce((acc, item) => acc + item.Cost, 0)
    

    只需将 object 替换为您正在解析的对象的名称,它应该可以工作。

    【讨论】:

    • 我相信在这种情况下的成本是商品对象的价格 * 数量
    • 啊是的,确实 =)
    【解决方案3】:

    你可以这样做,希望对你有帮助

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

    【讨论】:

      【解决方案4】:

      @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>
      

      希望对你有帮助。

      【讨论】:

        【解决方案5】:

        用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);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-17
          • 1970-01-01
          • 2018-09-18
          • 1970-01-01
          相关资源
          最近更新 更多