如何使用未知数量的对象键修改嵌套对象的值?

时间:2019-11-15 17:22:07

标签: javascript arrays node.js json

这个问题很难说出来。假设我有一个像这样的数组:

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对象。

0 个答案:

没有答案