我有一个 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
可以有多个bc
,而bc
有一个name属性。
我也接受关于更好的 json
结构来支持这个概念的建议。
最佳答案
将多个项目添加到对象的解决方案。
它使用一个对象 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>');
关于javascript - 如何将数组附加到现有的 json 数组并写入 Node js 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36763938/