【问题标题】:Formatting the Array of objects [duplicate]格式化对象数组[重复]
【发布时间】:2019-11-13 06:46:31
【问题描述】:

我正在尝试将 JSON 响应格式化为新格式。

实现预期结果的最佳方法是什么。

JSON 响应

{
  body: [{
    id: 0,
    data: [{
        cellId: 0,
        colId: 'A',
        value: '*',
      },
      {
        cellId: 1,
        colId: 'B',
        value: 'W',
      },
      {
        cellId: 2,
        colId: 'C',
        value: 'ECE',
      }
    ],
    errors: [
      { colId: 'B', errorCode: 'msg_000' },
      { colId: 'D', errorCode: 'msg_001' }
    ]
  }]
}

转换后的预期格式为

const convertedData = {
  id: 0,
  A: '*',
  B: 'W',
  C: 'ECE'
  errors: [
    { colId: 'B', errorCode: 'msg_000' }, 
    { colId: 'D', errorCode: 'msg_001' }
  ]
}

【问题讨论】:

  • 您需要展示您已经尝试过的内容。
  • JSON 是一些数据结构的文本表示。该数据结构是您想要获得的,而不是格式化 JSON。并且 TypeScript 不参与这个问题。
  • 请访问help center,使用tour查看内容和How to Ask。做一些研究,搜索关于 SO 的相关主题;如果您遇到困难,请发布您的尝试minimal reproducible example,并注明输入和预期输出。
  • let { id, errors } = obj.body[0]; let data = { id, errors }; obj.body[0].data.forEach(d => data[d.colId]=d.value)

标签: javascript


【解决方案1】:

试试这个!!

let obj = {
body: [
    {
      id: 0,
      data: [
        {
          cellId: 0,
          colId: 'A',
          value: '*',
        },
        {
          cellId: 1,
          colId: 'B',
          value: 'W',
        },
        {
          cellId: 2,
          colId: 'C',
          value: 'ECE',
        }
      ],
       errors: [
        {colId: 'B', errorCode: 'msg_000'},
        {colId: 'D', errorCode: 'msg_001'}
       ]
    }
]
};

let resultArr = [];

obj.body.forEach(data=>{
  let newObj = {};
  newObj['id'] = data.id;
  data.data.map(value=>{newObj[value.colId] = value.value});
  newObj['errors'] = data.errors;
  resultArr.push(newObj)
});

console.log(resultArr)

【讨论】:

    猜你喜欢
    • 2022-12-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    相关资源
    最近更新 更多