我有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
可以有多个bc
,bc
具有name属性。
我也接受关于更好的json
结构的建议,以支持这一概念。
答案 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;