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

标签 javascript json node.js

我正在尝试从 JSON 文件中提取多条数据以放入一个对象中,这样我就可以将对象转换回 JSON,只包含我想要的数据。

我在想这样的对象是可能的:

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

这是提取数据的循环,但我不知道如何将三个数据点分配给对象 (data) 内的同一个对象 (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) 上执行。

最佳答案

使用允许属性访问的 [] 表示法而不是 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);
}

关于JavaScript 将 JSON 数据提取到新对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44467539/

相关文章:

javascript - Angular ng-repeat无法获取对象的值

c++ - 为什么在Visual Studio Code中将 “C/C++:”插入我的task.json文件的标签中?

python - 将 networkx 图导出到 json 图文件的方法?

node.js - 无法在 Windows 上启动 RabbitMQ 集群的多个 Node

node.js - 如何将流传输到 Node 中的文件描述符?

node.js - npm ELIFECYCLE 错误退出状态 1

javascript - 自动运行 CSS 更改

javascript - 如何使用 Node.js 运行 Jison 测试?

javascript - html 格式的优先级字段

mysql - 消息: Illegal string offset (decode JSON with codeigniter and mysql)