如何遍历对象并更改数据集中的 属性 键

how to loop through objects and change the property keys in a data set

我有一组数据需要根据我想要的特定格式重新格式化。 以下是我收到的数据格式。

      const recieved = [
    {
      "name": "1PM Industries Inc ",
      "series": [
        {
          "value": 0.0001,
          "name": "2019-08-30"
        },
        {
          "value": 0,
          "name": "2019-08-28"
        }
      ]
    }
  ]

我需要做的是遍历所有对象 属性 键 "name""series""value" 并将它们更改为 "id""data" , "x""y" 分别。

以下是我要更改上述数据集的数据格式。 我需要 "name" 替换为 "x" 并且 "value" 应该替换为 "y"

  const columns = [
    {
      "id": "japan",
      "data": [
        {
          "x": "plane",
          "y": 45
        },
        {
          "x": "helicopter",
          "y": 253
        }
      ]
    }
  ]

我发现我们可以通过 Object.keys

访问对象的 属性 个键
  function formatData(columns) {
    columns.map(col => {

    })
  }

在数据格式化方面,我发现自己处于非常困难的境地。希望有人能帮我解决这个问题。谢谢

这应该有效:

received.map(r => ({
  id: r.name,
  data: r.series.map(s => ({
    x: s.name,
    y: s.value
  }))
}));

映射每个接收到的对象,return一个新对象。新对象的 id 是接收对象的 name。新对象的 data 是旧对象 series 的映射,将 name 转换为 x,将 value 转换为 y

您可以重命名属性 (Assigning to new variable names) 并生成新对象。

const
    recieved = [{ name: "1PM Industries Inc ", series: [{ value: 0.0001, name: "2019-08-30" }, { value: 0, name: "2019-08-28" }] }],
    result = recieved.map(({ name: id, series }) => ({ 
        id, 
        data: series.map(({ value: x, name: y }) => ({ x, y }))
    }));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

您可以将 for..in 循环与 hasOwnProperty() 方法结合使用

使用递归获得更好的脚本

您可以使用 map 方法。

const recieved = [
            {
              "name": "1PM Industries Inc ",
              "series": [
                {
                  "value": 0.0001,
                  "name": "2019-08-30"
                },
                {
                  "value": 0,
                  "name": "2019-08-28"
                }
              ]
            }
          ]
    let output = recieved.map(o=>{
            let data = o.series.map((i)=>{ return {x: i.value, y: i.name}});
            return {id: o.name, data}
        });

    console.log(output)