Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用索引数组更改深度未知的多维对象中的特定项?_Javascript_Node.js_Ecmascript 6 - Fatal编程技术网

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的副本,很抱歉复制了。我想我就是不能用正确的方式表达这个问题。不用担心,搜索可能会很困难:)我想这是一个更好的方法: