1. ホーム
  2. ジャバスクリプト

[解決済み】キー/バリューjavascriptオブジェクトのキーを取得する最良の方法

2022-04-05 05:37:46

質問

のようなJSオブジェクトがあった場合。

var foo = { 'bar' : 'baz' }

ということが分かれば foo はその基本的なキー/バリュー構造を持っていますが、キーの名前を知らない場合、それを取得する最も簡単な方法は何ですか? for ... in ? $.each() ? もっといいものがあればいいのですが...。

解決方法は?

すべてのキーを取得したい場合。 ECMAScript 5 で導入された Object.keys . これは新しいブラウザでのみサポートされていますが MDCドキュメント は、別の実装を提供しています(これも for...in btw)です。

if(!Object.keys) Object.keys = function(o){
     if (o !== Object(o))
          throw new TypeError('Object.keys called on non-object');
     var ret=[],p;
     for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
     return ret;
}

もちろん、キーと値の両方が必要な場合は、次のようになります。 for...in が唯一の合理的な解決策です。