【发布时间】:2017-11-07 03:54:25
【问题描述】:
我有一个函数可以获取任意大小的数组以及一个值。该函数应该将给定的键应用于具有嵌套对象的对象,然后将最后一个键设置为给定的值。然后它将对象存储在其他地方。
当密钥的数量已知且一致 (object[key1][key2][key3] = value) 时,这很容易做到,但是当给定的密钥数量未知时,这似乎是不可能的。
我知道我不能这样做
let foo = object[stack[0]];
stack.slice(1).forEach(key => foo = foo[key]);
foo = value;
因为这最终会重新分配foo。
我想做的是能够做object[stack] = value之类的事情,或者类似的事情。
编辑
似乎人们将其解释为 get 嵌套值,这不是我想要的。我想设置一个嵌套值。
询问者的示例数据
let stack = ['a', 'b', 'c', 'd'];
let object = {
a: {
b: {
c: {
d: 'Lorem'
}
}
}
}
// Do something that sets object.a.b.c.d to 'Lorem ipsum' (that isn't reliant on the number of keys)
console.log(object);
/*
{
a: {
b: {
c: {
d: 'Lorem ipsum'
}
}
}
}
*/
【问题讨论】:
-
所以你有一个键数组,你想要一些有效的方法来连续应用每个键以获得最终的嵌套值?
-
这有点混乱,你能说清楚一点吗?也许向我们展示更多数据,或者你的数组可能看起来像你回来的样子
-
一个有点令人困惑的问题,但我猜你需要对此使用递归。我有一个类似的问题,通过递归解决了。 stackoverflow.com/questions/44103268/…
-
编辑问题以包含示例数据。
-
您能否也包括示例输出,您希望输出得到示例数据的内容。
标签: javascript node.js