23

重複の可能性:
キー/値の JavaScript オブジェクトのキーを取得する最良の方法

foo = {bar: "baz"}

foo 内のすべてのプロパティと値のリストを取得するにはどうすればよいですか?

4

3 に答える 3

46

for inループはキーと値を与えることができます。厳密モードでの変数宣言にはconstletまたはを使用することを忘れないでください。var

for(const p in foo) {
    console.log (p, foo[p])
}

コンソールから:

foo = {bar: "baz"}

Object
bar: "baz"
__proto__: Object

for(p in foo) { console.log (p, foo[p]) }
> bar baz

Object.hasOwnProperty()ループしているオブジェクトがプロトタイプからプロパティを継承している場合、次のような関数を使用して、継承されたプロパティがループされるのを防ぐことができます。

for(const p in foo) {
    if (foo.hasOwnProperty(p)) {
        console.log (p, foo[p])
    }
}
于 2012-07-01T02:16:27.280 に答える
1

これは、現在作業しているプラ​​ットフォームによって異なる場合があります。端末から実行している場合は を使用printし、consoleオブジェクトがない場合は使用できますdocument.write()

理解するために使用/読むことができるものを次に示します。

var foo = {bar: "baz", boolean: true, num: 2}

for (i in foo) {
//checks to see where to print.
if (typeof console === 'object') 
    console.log(i + ": " + foo[i]);
else if (typeof document === 'object') 
    document.write(i + ": " + foo[i]);
else 
    print(i + ": " + foo[i]);
}

あるいは、単にconsole.log(foo)Chrome/Firefox で言うと、ブラウザがループ強調表示を行い、オブジェクトのプリティプリントを提供するため、上記のループを実際に行う必要はありません。

console.debug(foo)の代わりに使用することもできますがconsole.log(foo)、違いは微妙です。詳細については、 http: //getfirebug.com/wiki/index.php/Console_APIを参照してください。

于 2012-07-01T02:54:20.537 に答える
1

あなたはそれをループすることができます:

for(var i in foo) {
  console.log( i + ": " + foo[i] + "<br />");
}

デモ

于 2012-07-01T02:16:06.640 に答える