当我不知道属性名称时,如何从javascript对象获取值

时间:2014-11-27 17:36:40

标签: javascript angularjs object

我有一个对象var obj = {id: value}

在我的html中,我想显示id和值。

我正在使用angularjs。

请:我不想要使用ng-repeat的解决方案,因为我在这个对象中只得到一个元素

谢谢

2 个答案:

答案 0 :(得分:1)

在现代浏览器上,您可以通过Object.keys获取对象的“自有”属性名称列表(不是其原型中的属性名称)。如果对象只有一个属性,则只返回一个名称:

var name = Object.keys(obj)[0]; // [0] = get the first (only)

在较旧的浏览器上,您可以通过for-in循环:(或者,您可以获得Object.keys的“垫片”或“填充”,这将使用一个封面下的

var name, n;
for (n in obj) {
    if (obj.hasOwnProperty(n)) {
        name = n;
        break;
    }
}

知道名称后,您可以使用它来获取值:

var value = obj[name];

附注:通常最好设计对象,以使属性名称一致,并且值会有所不同。例如,而不是{id: value} idvalue都是可变的,而不是{id: "the ID", value: "the value"},其中属性名称是一致的,值是变化的。然后,您可以使用obj.idobj.value

答案 1 :(得分:0)

我不确定你的问题是什么。你有一个名为obj的对象,它有一个名为id的属性。

您要显示名为id的属性的值吗?如果是这样的话,那就是:



<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app ng-init="obj = {id: 'foo'}">
  
  Object id: {{obj.id}}
  
</div>
&#13;
&#13;
&#13;

或者是对象更像字典的情况,其中属性是变量键?

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app ng-init="obj = {bar: 'foo'}; id = 'bar'">
      
  Object {{id}}: {{obj[id]}}
      
</div>
&#13;
&#13;
&#13;