猿问

动态访问多级对象键

我有一个 JavaScript 对象,它是多层次的,例如:


let obj = [

    {

        "testKeyOne": "one",

        "testKeyTwo": "two"

    },

    {

        "testKeyThree": "three",

        "testKeyFour": "four",

        "testKeyFive": {

            "testKeyFiveAndAHalf": "5.5"

            "testKeyFiveAndThreeQuarters": "5.75"

        }

    },

]

我还有一个用于我需要访问的键的数组,例如,如果我正在寻找那个5.5,


let array = [1, "testKeyFive", "testKeyFiveAndAHalf"]

虽然我的阵列也可能看起来像这样,如果我正在寻找 "one"


let array = [0, "testKeyOne"]

有没有办法使用数组来访问所需的值?


这是我第一次提问,所以如果我搞砸了,或者有什么不清楚的地方或需要改变的地方,我深表歉意。


谢谢!


慕盖茨4494581
浏览 201回答 3
3回答

烙印99

是的。你可以在数组上使用一个reduce:let result = array.reduce((value, entry) => value[entry], obj);

HUH函数

let desired = obj; while(array.length > 0) { desired = desired[array[0]]; array.shift() }console.log(desired)这应该有效

牧羊人nacy

这是一种方法:let obj = [{    "testKeyOne": "one",    "testKeyTwo": "two"  },  {    "testKeyThree": "three",    "testKeyFour": "four",    "testKeyFive": {      "testKeyFiveAndAHalf": "5.5",      "testKeyFiveAndThreeQuarters": "5.75"    }  },]let arr = [  [1, "testKeyFive", "testKeyFiveAndAHalf"],  [0, "testKeyOne"]]function foo(objArr, accessArr) {  for (const [index, ...keys] of accessArr) {    let obj = objArr[index];    for (const key of keys) {       obj = obj[key];    }    console.log(obj)  }}foo(obj, arr);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答