JavaScript将JSON数据提取到新对象中

时间:2017-06-09 22:36:48

标签: javascript json node.js

我试图从JSON文件中提取多个数据片段以放入一个对象,这样我就可以将对象转换回只有我想要的数据的JSON。

我在想这样的物体是可能的:

data = {
  0: {
    lat: xxxx,
    lng: xxxx,
    name: xxxx
  },
  1: {
    ...
  }
};

这是提取数据的循环,但我无法弄清楚如何将三个数据点分配给同一个对象(data.0,data.1,...)对象(数据)。

for (let z = 0; z < data.features.length; z++) {
  finalData.z.lat = data.features[z].center[0];
  finalData.z.lng = data.features[z].center[1];
  finalData.z.name = data.features[z].text;
}

我不介意在对象上使用数组,因为它们也可以是JSON.stringified。 data.features的长度因API调用而异。

我希望使用vanilla JS来实现这一目标,但愿意接受建议。它正在服务器上执行(Node.js)。

1 个答案:

答案 0 :(得分:1)

使用允许属性访问的[]表示法,而不是dot表示法。

var dataArray = [];

for (let z = 0; z < data.features.length; z++) {
  var finalData = {};
  finalData[z] = {};

  finalData[z].lat = data.features[z].center[0];
  finalData[z].lng = data.features[z].center[1];
  finalData[z].name = data.features[z].text;

  dataArray.push(finalData);
}

如果您使用的是ES6,则可以使用[]模式匹配来获取计算出的属性名称。

let dataArray = [];

for (let z = 0; z < data.features.length; z++) {
  let feature = data.features[z];
  let structuredData = {
        [z]: {
            lat: feature.center[0],
            lng: feature.center[1],
            name: feature.text
      }
  };

  dataArray.push(structuredData);
}