这个问题很难说出来。假设我有一个像这样的数组:
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,并将修改后的列表保存在数据库中,以覆盖旧列表。对象列表也可能变得非常大,因此,我尽可能避免创建新数组。
我还问了一个问题Here,它被重复说一遍:您的帖子与一个类似的问题有关。如果这个问题不能解决您的问题,请再提出一个问题。
他们给Here重复的答案并不能回答我的问题,因为那只能告诉我如何获取作为字符串的对象。我需要设置同一数组中的对象。对重复项的答案类似于我在问题中(第一次)提到的“未工作”的forEach循环。
有什么方法可以设置带有未知数量键的嵌套对象值?
另一种措辞: 您知道如何使用html
var elm = document.getElementById('elm1');
var elmA = elm.getElementsByTagName('a')[0];
elmA.href = 'https://www.example.com';
,这将修改ID为<a>
的元素内的elm1
标签
我需要这样做,但是要使用与html无关的JSON对象。