这个问题很难说出来。假设我有一个像这样的数组:
var object = {
key1a: {
key2a: {
key3a: value,
key3b: value,
key3c: value
},
key2b: {
key3a: value,
key3b: value,
key3c: value
}
},
key1b: {
key2a: {
key3a: value,
key3b: value,
key3c: value
},
key2b: {
key3a: value,
key3b: value,
key3c: value
}
}
}
我需要做这样的事情:
let key = 'key2a';
let value = {key3a: 'value1', key3c: 'value2', key3d: 'value5'};
object.key1b[key] = value;
但是我还需要做这样的事情:
let key = 'key2b.key3a';
let value = 'value1';
object.key1a[key] = value;
我需要一种选择任意数量的对象键并修改值的方法。
我想过类似的事情,但是不确定是否可以编辑对象变量:
let keys = ['key2a', 'key3b'];
let file = object.key1a;
keys.forEach(function(key){
file = file[key];
});
file = content;
键列表可以无限扩大,所以我不能只使用if语句。
如何编辑键数未知的嵌套对象?
注意:我正在使用node.js并从数据库文件中提取对象列表,修改json,并将修改后的列表保存在数据库中,以覆盖旧列表。对象列表也可能变得非常大,因此,我尽可能避免创建新数组。