状況
返される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 = {"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 を参照してください
for in
ループを使用することもできます。
data.forEach( function ( m ) {
for ( var key in m ) {
console.log( key ); // "who"
console.log( m[key] ); // "Arthur"
}
});
上記は、オブジェクト内の複数のkey: value
ペアに対しても機能します。
[ {"who":"Arthur","who":"Fred"} ]
これらのオブジェクトにプロパティが1つしかないことが常に予想される場合は、次のようにすることができます。
var name, person;
for (person in data) {
for (name in data[person]) {
console.log(data[person][name]);
}
}
これは、データ内の各人の各プロパティを介して列挙されます。 1人あたりのプロパティは1つしかないため(私は推測します)、その1つのプロパティを列挙して停止するだけで、名前に関係なくそのプロパティを使用できます。