javascript - 如何连接/分割实际上是一个对象的对象

标签 javascript node.js

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/端口属性保存为数组中单独对象的集合。我无法将 , 添加到每个对象

最佳答案

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');

关于javascript - 如何连接/分割实际上是一个对象的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48963670/

相关文章:

javascript - 如何禁用 Sequelize 同步?

javascript - 没有抛出错误,但我仍然无法为包含 RGB 字符串的变量分配 backgroundColor

node.js - 发布 NPM 包时如何排除环境文件

node.js - Azure Node SDK可获得超过50个虚拟机

node.js - Sequelize Mariadb 如何将主键的默认值设置为 uuid?

javascript - 为什么 Node.js cluster.fork() 不在 Windows 8 上创建我的进程的副本?

javascript - 检测文本是否溢出

javascript - 将只读值与用户输入的值进行比较

javascript - Angular 样式 : add dynamically a background-image with an overlay

javascript - 如何通过单击按钮来翻转 Shiny 的形状?