как перебирать объекты и изменять ключи свойств в наборе данных - PullRequest
0 голосов
/ 19 октября 2019

У меня есть набор данных, который необходимо переформатировать в соответствии с конкретным форматом, который я желаю. Ниже приведен формат данных, которые я получаю.

      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 => {

    })
  }

Я нахожусь в действительно тяжелых ситуациях, когда дело доходит до форматирования данных. Надеюсь, кто-нибудь может мне помочь с этим. Спасибо

Ответы [ 4 ]

1 голос
/ 19 октября 2019

Для этого вы можете использовать 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)
1 голос
/ 19 октября 2019

Вы можете переименовать свойства ( Назначение новым именам переменных ) и генерировать новые объекты.

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; }
1 голос
/ 19 октября 2019

Это должно работать:

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

Отобразить каждый полученный объект, вернуть новый объект. id нового объекта - это name полученного объекта. data нового объекта - это карта series старых объектов, преобразующая name в x и value в y.

0 голосов
/ 19 октября 2019

вы можете использовать цикл for..in в сочетании с методом hasOwnProperty ()

использовать рекурсию для улучшения сценария

...