使用变量动态访问对象的Array属性

时间:2017-04-26 17:49:24

标签: javascript

不重复:Dynamically access object property using variable

如何动态读取JavaScript Object Array属性。

var person = {
    name: "Ravi",
    age: 25
    friends: [{
            name: "Suresh"
        },
        {
            name: "Nitin"
        },
        {
            name: "Argha"
        }
    ]
}

所以,如果我想动态读取任何属性,我可以使用

var dynamicProperty = 'age';
person[dynamicProperty] // Output : 25

但是阵列失败了。

var dynamicProperty = 'friends[1]';
person[dynamicProperty].name // Output : undefined

动态传递数组名称的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

使用动态属性访问表示法一次不能访问多个属性。您需要将一组键(通常称为“路径”)与Array#reduce结合使用:

var person = {
  name: "Ravi",
  age: 25,
  friends: [{
      name: "Suresh"
    },
    {
      name: "Nitin"
    },
    {
      name: "Argha"
    }
  ]
}

function access (o, k) { return o[k] }

var result = ['friends', 1, 'name'].reduce(access, person)

console.log(result)