在不知道属性名称的情况下访问JavaScript的对象属性

Jam*_*ber 18 javascript properties object

情况

我有一个返回的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"}]
Run Code Online (Sandbox Code Playgroud)

问题

在我的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
});
Run Code Online (Sandbox Code Playgroud)

Ric*_*omi 31

Object.keys(m)[0]应返回对象中的第一个可枚举属性名称m.

所以,如果m = {"who": "Arthur"};m[Object.keys(m)[0]]"Arthur".

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys


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

  • 大坝老兄...我已经基本上打了一年JS,从不打扰看"对象";)谢谢你指点我这个方向.工作得很完美!:d (2认同)

hit*_*uct 5

您还可以使用for in循环:

data.forEach( function ( m ) {
    
  for ( const key in m ) {

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

  }

});
Run Code Online (Sandbox Code Playgroud)

上面的方法也适用于key: value对象中的多对,即:

[ {"who": "Arthur", "who": "Fred"}, {"who": "Craig"}, ]
Run Code Online (Sandbox Code Playgroud)