当名称在字符串中时,JavaScript获取对象属性值

时间:2014-09-07 00:07:22

标签: javascript

如果知道这应该有效:

var object = {
  property: "value"
}
var propertyname = "property";
var propertyvalue = object[propertyname];

但是当对象看起来像这样时,如何使用propertyname-variable获取属性值?

var object = {
  anotherObject: {
    property: "value"
  }
}
var propertyname = "anotherobject.property";
var propertyvalue = object[propertyname]; // This should not work...

修改:根据建议,在这种情况下,属性名称可以拆分为“。”。但是,如果它是一个任意级别呢?我能以某种方式构造一个可以获得属性值的for循环吗?

1 个答案:

答案 0 :(得分:2)

OP的代码无效,因为anotherObject.property中没有名称为object的媒体资源。有一个名为anotherObject的属性,其值是一个名为property的属性的对象。要实现这一目标,您必须访问这些连续级别的属性。

此代码拆分复合属性名称,然后执行连续的属性访问。

var nameArray = propertyname.split('.');
var propertyvalue = object;
for (var i = 0; i < nameArray.length; i++) {
    propertyvalue = propertyvalue[nameArray[i]];
}