web-dev-qa-db-ja.com

JSで不明な単一キーを持つオブジェクトの値を取得します

未知の単一キーを持つオブジェクトの値を取得するにはどうすればよいですか?

例:

var obj = {dbm: -45}

キーを知らずに-45の値を取得したい。

オブジェクトキー(常に1つ)をループできることを知っています。

for (var key in objects) {
    var value = objects[key];
}

しかし、これに対するよりクリーンな解決策があるかどうか知りたいですか?

12
Osama

Object.keysは解決策かもしれません:

Object.keys({ dbm: -45}); // ["dbm"]

For-inとObject.keysの違いは、Object.keysがすべての独自のキー名を返し、for-inを使用してオブジェクトのすべての独自の継承されたキー名を反復処理できることです。

James Brierleyが以下にコメントしているように、この方法でオブジェクトの未知のプロパティを割り当てることができます。

var obj = { dbm:-45 };
var unkownKey = Object.keys(obj)[0];
obj[unkownKey] = 52;

ただし、Object.keysがキー名をある順序で返すプロパティを割り当てると、エラーが発生しやすくなる可能性があることに注意する必要があります。

13
Blauharley

新しいオプションがあります: Object.values 。したがって、knowの場合、オブジェクトには1つのプロパティしかありません。

const array = Object.values(obj)[0];

実例:

const json = '{"EXAMPLE": [ "example1","example2","example3","example4" ]}';
const obj = JSON.parse(json);
const array = Object.values(obj)[0];
console.log(array);

プロパティの名前も知る必要がある場合は、 Object.entries および破壊:

const [name, array] = Object.entries(obj)[0];

実例:

const json = '{"EXAMPLE": [ "example1","example2","example3","example4" ]}';
const obj = JSON.parse(json);
const [name, array] = Object.entries(obj)[0];
console.log(name);
console.log(array);
7
T.J. Crowder