1. ホーム
  2. javascript

[解決済み] javascriptオブジェクトの名前を知らない場合、どのようにプロパティにアクセスするのですか?

2022-08-14 15:07:19

質問

このようなjavascriptオブジェクトがあるとします。

var data = { foo: 'bar', baz: 'quux' };

プロパティ名でアクセスすることができます。

var foo = data.foo;
var baz = data["baz"];

しかし、プロパティの名前がわからない場合に、これらの値を取得することは可能なのでしょうか?これらのプロパティは順序付けされていないため、見分けがつかないのでしょうか?

私の場合、関数が一連の名前と値のペアを受け入れる必要がある状況について特に考えていますが、プロパティの名前は変更される可能性があります。

これを行う方法についての私の考えは、データとともにプロパティの名前を関数に渡すことですが、これはハックのように感じられます。可能であれば、イントロスペクションでこれを行うことを希望します。

どのように解決するのですか?

古いバージョンのJavaScript(< ES5)では for..in ループを使用する必要があります。

for (var key in data) {
  if (data.hasOwnProperty(key)) {
    // do something with key
  }
}

ES5の紹介 オブジェクトのキー Array#forEach を追加することで、これが少し簡単になります。

var data = { foo: 'bar', baz: 'quux' };

Object.keys(data); // ['foo', 'baz']
Object.keys(data).map(function(key){ return data[key] }) // ['bar', 'quux']
Object.keys(data).forEach(function (key) {
  // do something with data[key]
});

ES2017 紹介 Object.values そして Object.entries .

Object.values(data) // ['bar', 'quux']
Object.entries(data) // [['foo', 'bar'], ['baz', 'quux']]