访问JavaScript';s对象属性而不知道该属性名称
形势 我有一个返回的JSON对象。下面是一个例子。在此特定示例中,访问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":"
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中不起作用。