繁体   English   中英

如何连接/拆分实际上是一个对象的对象

[英]How to join/split objects that are one object in fact

var ipRegex = require('ip-port-regex');
...
for(var i = 0; i < orgArrayWithHostsAndPorts.length; i++) {
   ipPort = ipRegex.parts(orgArrayWithHostsAndPorts[i]);
   console.log(ipPort);
   /* 
     Gives long listing
     { ip: 'firstip', port: 'firstport' }
     { ip: 'secondip', port: 'secondport' }
    */
   fs.writeFileSync('/tmp/test.json', JSON.stringify(ipPort, null, 2), 'utf-8');
}

所以当我做fs.writeFileSync我只看到第一个对象。 我真正想要的是将每个 ip/port 属性保存为数组中单独对象的集合。 我无法将,添加到每个对象

fs.writeFileSync方法将在每次调用时覆盖文件。 由于您对列表中的每个项目都调用一次,因此文件中同时只有一个项目。

此外,使用fs.appendFileSync会写入所有对象,使您的文件看起来像:

{ "ip": "firstip", "port": "firstport" }
{ "ip": "secondip", "port": "secondport" }

但这不是有效的 .json。 这些对象必须包含在一个数组中并用逗号分隔:

[
    { "ip": "firstip", "port": "firstport" },
    { "ip": "secondip", "port": "secondport" }
]

我能想到的获得您想要的结果的最简单方法是将您的数据映射到一个新数组中,然后将该数组写入文件:

ipPorts = orgArrayWithHostsAndPorts.map( data => ipRegex.parts(data));
fs.writeFileSync('/tmp/test.json', JSON.stringify(ipPorts, null, 2), 'utf-8');

该文件以写入模式打开,因此您在每次执行 for 循环时都会覆盖。 更好的方法是以追加模式打开文件并写入内容。 看看如何附加到节点中的文件?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM