javascript - 使用变量动态访问对象的数组属性

标签 javascript

不重复:Dynamically access object property using variable

如何动态读取 JavaScript 对象数组属性。

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

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

最佳答案

您无法使用动态属性访问表示法一次访问多个属性。您需要将键数组(通常称为“路径”)与 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)

关于javascript - 使用变量动态访问对象的数组属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43641228/

相关文章:

javascript - 禁用各种 html 元素上的单击事件

javascript - 将内容包装在一个 div 中,然后附加到

javascript - MVC - 布局加载部分 View ,但不触发 javascript

javascript - 谷歌应用脚​​本: how to search certain column for words from list and return text to another column

javascript - 使用 onMouseOver 插入时如何提供 .gif 高度和宽度

javascript - 改变 JavaScript 对象以使其更加数字化

javascript - 页面在加载自定义 javascript 时停止响应

javascript - jQuery-验证使用时间选择器选择的开始时间和结束时间

javascript - 已发送回复 1 个回复迟到

javascript - jquery中如何通过href选择标签