如何将数组附加到现有的json数组并在节点js中写入文件

时间:2016-04-21 08:28:26

标签: javascript arrays json node.js

我有spring.cloud.bootstrap.location个文件。

example.json

在这里,我需要在{ "tc" : [ {"name" : "tc_001"}, {"name" : "tc_002"}, {"name" : "tc_003"}, {"name" : "tc_004"}, {"name" : "tc_005"} ] } 索引中添加另一个数组。在tc[0]th我尝试了这个:

Node JS

但是当打印var fs = require('fs'); var obj = JSON.parse(fs.readFileSync('example.json', 'utf8')); var arr1 = {bc :[{name:'bc_001'}]} var arr2 = {bc :[{name:'bc_002'}]} obj.tc[0] = arr1; obj.tc[0] = arr2; 时,obj已替换为obj.tc[0]的值。 我想要达到的最终结果是:

arr2

我还想把它写回到同一个{ "tc" : [ { "name" : "tc_001" "bc" : [ {"name" = "bc_001"}, {"name" = "bc_002"} ] }, {"name" : "tc_002"}, {"name" : "tc_003"}, {"name" : "tc_004"}, {"name" : "tc_005"} ] } 文件中。 我试图在这里实现一个包含json个唯一名称的tc个文件的文件。此外,一个tc可以有多个bcbc具有name属性。

我也接受关于更好的json结构的建议,以支持这一概念。

1 个答案:

答案 0 :(得分:3)

要添加到对象的多个项目的解决方案。

它使用一个对象o,其中新值应该去,一个值对象v,其中包含键和要分配的项目。

在里面迭代密钥并构建一个新的数组(如果还没有)。然后将所有值推送到数组。



function add(o, v) {
    Object.keys(v).forEach(k => {
        o[k] = o[k] || [];
        v[k].forEach(a => o[k].push(a));
    });
}

var obj = { "tc": [{ "name": "tc_001" }, { "name": "tc_002" }, { "name": "tc_003" }, { "name": "tc_004" }, { "name": "tc_005" }] };

add(obj.tc[0], { bc: [{ name: 'bc_001' }] });
add(obj.tc[0], { bc: [{ name: 'bc_002' }] });
document.write('<pre>' + JSON.stringify(obj, 0, 4) + '</pre>');
&#13;
&#13;
&#13;