Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问JavaScript';s对象属性而不知道该属性名称_Javascript_Object_Properties - Fatal编程技术网

访问JavaScript';s对象属性而不知道该属性名称

访问JavaScript';s对象属性而不知道该属性名称,javascript,object,properties,Javascript,Object,Properties,形势 我有一个返回的JSON对象。下面是一个例子。在此特定示例中,who可以更改为所需的任何属性名称。例如,下次这将是name而不是who [{"who":"Arthur"},{"who":"Craig"},{"who":"Dan"},{"who":"Daniel"},{"who":"Frank"},{"who":"Ian"},{"who":"jamie"},{"who":"Jason"},{"who":"jaz"},{"who":"Liam"},{"who":"Paul"},{"who":"

形势

我有一个返回的JSON对象。下面是一个例子。在此特定示例中,
who
可以更改为所需的任何属性名称。例如,下次这将是
name
而不是
who

 [{"who":"Arthur"},{"who":"Craig"},{"who":"Dan"},{"who":"Daniel"},{"who":"Frank"},{"who":"Ian"},{"who":"jamie"},{"who":"Jason"},{"who":"jaz"},{"who":"Liam"},{"who":"Paul"},{"who":"Shaun"},{"who":"Wayne"}]
问题

在我的JS中,我需要能够引用属性并访问它的数据,而不使用它的名称,因为名称总是不同的

我尝试过的

data.forEach(function(m){
    console.info(m); // Object { who="Craig"}
    console.info(m.who); // Craig, as expected
    console.info(m[0]); // now not sure who to get it if who changes to name
});
Object.keys(m)[0]
应返回对象
m
中的第一个可枚举属性名

所以如果
m={“谁”:“亚瑟”}m[Object.keys(m)[0]]
将成为
“亚瑟”



或者:
Object.values(m)[0]
。请参见

如果总是希望这些对象只有一个属性,可以执行以下操作:

var name, person;
for (person in data) {
    for (name in data[person]) {
        console.log(data[person][name]);
    }
}

这将枚举数据中每个人的每个属性。因为每个人只有一个属性(我假设),它只会枚举该属性并停止,允许您使用该属性,而不管其名称如何。

您也可以使用
for in
循环:

data.forEach( function ( m ) {

  for ( var key in m ) {

    console.log( key ); // "who"
    console.log( m[key] ); // "Arthur"

  }

});
上述方法也适用于对象中的多个
键:值
对,即:

[ {"who":"Arthur","who":"Fred"} ]

你在找
m['who']
?事实上,这就是我可以返回who的方式。但是我需要能够返回一个字符串。所以m['*']有效。我不知道该属性的名称。明白了,回答补充。有人知道这是否可以使用jpath查询吗?可能是Dam dude的副本。。。我研究JS基本上已经一年了,从来没有考虑过
对象
;)谢谢你给我指明了这个方向。工作得很好!:DSweet,所以我可以通过引用对象来获得对象的顶级视图。。。niicceeee@RickViscomi请注意,
Object.keys
在IE8中不起作用。