我有一个JavaScript函数,用于获取一个对象并具有预创建的对象。目标是使函数将传递对象的所有缺少属性添加到预创建的对象中。
仅比较一级时,这很容易。例如,为了实现以下内容:
Precreated: {hello: "world"}
Passed: {hello: "there", colour: "green"}
Result: {hello: "world", colour: "green"}
你只需要查看传递对象的每个键,查看该键是否已存在于预先创建的对象中,如果不存在,则将其添加到相应的值。
但是,如果你想在多个级别上执行此操作,它会变得有点奇怪。例如,我希望这样运行:
Precreated: {hello: {there: true}}
Passed: {hello: {world: true}}
Result: {hello: {there: true, world: true}}
我的想法是,我将只循环传递的对象,如果我发现其中有一个对象,就调用该对象的函数,依此类推,直到函数处理完所有子级。但是,当你这样做时,你必须动态比较两个对象的子级。比如说,我知道程序有多少层深度,叫什么名字等等,我如何以编程方式访问它?我问这个问题是因为我不能硬编码像
if (result[key1][key2][key3]...
这样的东西,而且像if (result[keys.join(..)]...
这样的东西也不可能。那么,在编写代码时不知道有多少层深度的对象的属性如何以编程方式访问?