【问题标题】:typescript - group and sum array of objects - problem with casting string to array打字稿-对象的分组和求和数组-将字符串转换为数组的问题
【发布时间】:2022-01-21 12:42:28
【问题描述】:

这里是代码-

界面-

interface IWEXInterface {
  readonly Date?: string;
  "Exec Qty"?: string;
  readonly Expiry?: string;
}

数据 -

let data: IWEXInterface[] = [
        {
          Date: "8/30/2021",
          "Exec Qty": "13",
          Expiry: "17/09/2021",
        },
        {
          Date: "8/30/2021",
          "Exec Qty": "15",
          Expiry: "17/09/2021",
        },
        {
          Date: "8/30/2021",
          "Exec Qty": "13",
          Expiry: "17/09/2021",
        },
      ];

对对象进行求和和分组 -

      const sums = [
        ...data
          .reduce((map, item) => {
            const { Date: key, "Exec Qty": qty } = item;
            const prev: IWEXInterface = map.get(key);

            if (prev) {
              prev["Exec Qty"]! += Number(qty);
            } else {
              map.set(key, Object.assign({}, item));
            }

            return map;
          }, new Map())
          .values(),
      ];

      console.log(sums);

输出 -

[ { Date: '8/30/2021', 'Exec Qty': '131513', Expiry: '17/09/2021' } ]

如何将字符串转换为数字。

想要的输出 -

 [ { Date: '8/30/2021', 'Exec Qty': 41, Expiry: '17/09/2021' } ]

.................................................. ..................................................... …………

【问题讨论】:

    标签: javascript typescript


    【解决方案1】:

    只需将prev["Exec Qty"] 转换为数字:

    prev["Exec Qty"] = String(Number(prev["Exec Qty"]!) + Number(qty));
    

    【讨论】:

      【解决方案2】:

      也许不使用+= 速记?

      prev["Exec Qty"] = Number(prev["Exec Qty"]) + Number(qty);
      

      【讨论】:

        【解决方案3】:

        尝试用这个替换你的代码,它会返回一个正确的字符串。

             if (prev) {         
            prev["Exec Qty"]! = (Number(prev["Exec Qty"])+ Number(qty)).toString()
                    } else {
                      map.set(key, Object.assign({}, item));
                    }
        

        【讨论】:

          猜你喜欢
          • 2021-02-24
          • 2014-04-05
          • 1970-01-01
          • 2020-09-30
          • 1970-01-01
          • 2018-09-18
          • 1970-01-01
          • 2021-05-09
          相关资源
          最近更新 更多