【问题标题】:Convert nested array of objects to specific group of objects of the data in JavaScript or TypeScript将嵌套的对象数组转换为 JavaScript 或 TypeScript 中数据的特定对象组
【发布时间】:2021-03-28 13:59:12
【问题描述】:

我有一个双重嵌套的对象数组,我想更改为特定的组数组以支持我的表结构。

以下是我的对象和我期望的结果。

let newData = {
  data: {
    summary: [
      {
        code: "12",
        data: [
          {
            group: "Trade",
            currency: "CAD", //group1
            amount: "$3,443.00",
            total: 1
          },
          {
            group: "Trade",
            currency: "USD", //group2
            amount: "$0.00",
            total: 0
          },
          {
            group: "Commission",
            currency: "CAD", //group3
            amount: "$0.00",
            total: 0
          },
          {
            group: "Commission",
            currency: "USD", //group4
            amount: "$0.00",
            total: 0
          }
        ]
      },
      {
        code: "34",
        data: [
          {
            group: "Trade",
            currency: "CAD", //group1
            amount: "$343.00",
            total: 21
          },
          {
            group: "Trade",
            currency: "USD", //group2
            amount: "$40.00",
            total: 40
          },
          {
            group: "Commission",
            currency: "CAD", //group3
            amount: "$30.00",
            total: 30
          },
          {
            group: "Commission",
            currency: "USD", //group4
            amount: "$20.00",
            total: 20
          }
        ]
      }
    ]
  }
};



let result = [
{
    code: "12",
    TradeCAD:
    {
            group: "Trade",
            currency: "CAD", //group1
            amount: "$3,443.00",
            total: 1
          },
     TradeUSD:     
           {
            group: "Trade",
            currency: "USD", //group2
            amount: "$0.00",
            total: 0
          },
     CommissionCAD:     {
            group: "Commission",
            currency: "CAD", //group3
            amount: "$0.00",
            total: 0
          },
     CommissionUSD:     {
            group: "Commission",
            currency: "USD", //group4
            amount: "$0.00",
            total: 0
          }

       
  },
  {
    code: "34",
    TradeCAD:
    {
            group: "Trade",
            currency: "CAD", //group1
            amount: "$343.00",
            total: 21
          },
     TradeUSD:     
           {
            group: "Trade",
            currency: "USD", //group2
            amount: "$40.00",
            total: 40
          },
     CommissionCAD:     {
            group: "Commission",
            currency: "CAD", //group3
            amount: "$30.00",
            total: 30
          },
     CommissionUSD:     {
            group: "Commission",
            currency: "USD", //group4
            amount: "$20.00",
            total: 20
          }

       
  },
];

我如何迭代和更改整个对象,如果我确实有大量数据,这是支持更少迭代的最佳方法?

【问题讨论】:

    标签: javascript arrays typescript object


    【解决方案1】:

    试试这个,看看是否有效。如果你愿意,你可以把代码压缩成一个函数。

    const result = newData.data.summary.map(item => {
      const res = {
        code: item.code,
      }
      item.data.forEach(d => {
        res[`${d.group}${d.currency}`] = d;
        d.amount = d.amount || "$0.00"; // default value for amount
        d.total = d.total || 0; // default value for total
      })
      return res;
    });
    console.log(JSON.stringify(result));
    

    【讨论】:

    • 它工作得很好,谢谢。只是一个问题.. 如果对象丢失或任何属性不存在,我们如何处理 null 检查?
    • 你能举个例子吗? :-)
    • 如果代码中缺少此对象:"34", { group: "Trade", currency: "CAD", //group1 amount: "$343.00", total: 21 },
    • 或代码:“34”,缺少组:“贸易”值
    • 我们如何检查这种情况?
    猜你喜欢
    • 2022-12-18
    • 1970-01-01
    • 2018-03-10
    • 2022-12-18
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    相关资源
    最近更新 更多