Javascript 如何使用索引数组更改深度未知的多维对象中的特定项?
假设我有一个数组,它看起来像:Javascript 如何使用索引数组更改深度未知的多维对象中的特定项?,javascript,node.js,ecmascript-6,Javascript,Node.js,Ecmascript 6,假设我有一个数组,它看起来像: const x = ["a", "b", "c", "d"] 我希望使用它来导航一个我不知道其结构的对象,例如: const y = { "a": { "b": { "c": { "d": "Value I require" } }, "f": ["g", "h"] }, "e": null } 然而,我的问题
const x = ["a", "b", "c", "d"]
我希望使用它来导航一个我不知道其结构的对象,例如:
const y = {
"a": {
"b": {
"c": {
"d": "Value I require"
}
},
"f": ["g", "h"]
},
"e": null
}
然而,我的问题是我不知道y
的深度,或者数组x
中有多少索引。如何执行以下操作:
let someVariable = {"prefilled": "data"}
someVariable[x[0]][x[1]][x[2]][x[3]] = y[x[0]][x[1]][x[2]][x[3]]
以一种既不特定于x
的长度,也不特定于y
的深度的方式(并且最好不是我当前的解决方案,它是一种深度为6的案例陈述)?对于这种简化的情况,someVariable
应该如下所示:
{
"prefilled": "data",
"a": {
"b": {
"c": {
"d": "Value I require"
}
}
}
}
我会使用Lodash之类的工具,或者实现类似的工具来导航对象:
let _ = require('lodash');
const x = ["a", "b", "c", "d"]
_.get(object, x.join('.'))
我会使用Lodash之类的工具,或者实现类似的工具来导航对象:
let _ = require('lodash');
const x = ["a", "b", "c", "d"]
_.get(object, x.join('.'))
可以迭代数组并遍历对象
const getValue=(对象,路径)=>path.reduce((o,k)=>(o |{})[k],对象),
y={a:{b:{c:{d:“值I require”},f:[“g”,“h”]},e:null},
x=[“a”、“b”、“c”、“d”]
log(getValue(y,x))代码>您可以迭代数组并遍历对象
const getValue=(对象,路径)=>path.reduce((o,k)=>(o |{})[k],对象),
y={a:{b:{c:{d:“值I require”},f:[“g”,“h”]},e:null},
x=[“a”、“b”、“c”、“d”]
log(getValue(y,x))代码>一个很好的答案!特别是考虑到我实际上以“a.b.c.d”的格式获取数据,并将其转换为数组以方便使用。允许我也做。
来设置另一个对象实例,作为对未来读者的提示。一个很好的答案!特别是考虑到我实际上以“a.b.c.d”的格式获取数据,并将其转换为数组以方便使用。允许我也执行。
设置另一个对象实例,作为未来读者的注意事项。另外还有@FelixKling Damnit的副本,很抱歉重复了。我想我就是不能用正确的方式表达这个问题。不用担心,搜索可能会很困难:)我想这是一个更好的:也是@FelixKling Damnit的副本,很抱歉复制了。我想我就是不能用正确的方式表达这个问题。不用担心,搜索可能会很困难:)我想这是一个更好的方法: