-2

重複の可能性:
Javascriptオブジェクト(連想配列)の長さ
JavaScriptオブジェクトをループする

var location = {
     "Steve": "New York",
     "Abigayle": "Chicago"
}

for (var i = 0; i < location .length; i++)
{
    console.log('works');
}

各アイテムに名前と値がある配列を作成しようとしています。

上記のコードは機能しません。オブジェクトを作成しようとしましたが、lengthプロパティがありません-forループがありません。

location= {
     "Steve": "New York",
     "Abigayle": "Chicago"
};

このコンテキストで配列を使用することは可能ですか?

4

4 に答える 4

2

持っているものだけで仕事をしたい場合は、

var location = {
     "Steve" : "New York",
     "Abigayle" : "Chicago"
}

for (var name in location) {
    console.log( name, location[name] );
}

長さが気になる場合は、オブジェクトの配列を使用してください

var location = [
     { key : "Steve", value : "New York" },
     { key : "Abigayle", value : "Chicago" }
];

しかし、それを調べる簡単な方法はありません。ループが必要になります。

于 2012-12-04T20:40:24.987 に答える
1

参考までに、オブジェクト内のすべてのキーを反復処理できます。

location = {
     "Steve": "New York",
     "Abigayle": "Chicago"
};

for (var elem in location) {
    console.log(elem);
}

プロデュース:

Steve
Abigayle

しかし、他の答えの1つは、おそらくあなたが探しているものへの正しい方法だと思います.

于 2012-12-04T20:41:34.550 に答える
1

オブジェクトキーloopも上書きできます。インデックス付きキーが必要な場合にのみ、ここで配列を使用する必要があります。

var loc = {
     "Steve": "New York",
     "Abigayle": "Chicago"
};

Object.keys( loc ).forEach(function( name ) {
    console.log('name: ', name, ' city: ', loc[ name ] );
});

ちなみに、はオブジェクトlocation内の (ほとんど) 予約済みの変数名です。window実際には上書きできないため、その変数の名前を変更する必要があります。


上記のコードは、最新のすべてのブラウザで動作する Ecmascript 262 エディション 5 コードを使用しています。レガシー ブラウザをサポートする場合は、さまざまな ES5 shim ライブラリのいずれかをロードする必要があります。

于 2012-12-04T20:42:59.473 に答える
1
var locations = [
     ["Steve","New York"]
    ,["Abigayle","Chicago"]
];

また

var locations = [
      {Name:"Steve",Location:"New York"}
     ,{Name:"Abigayle",Location:"Chicago"}
];

次のように、最初のオプションでデータを出力できます。

var delimiter = "    ";
console.log("var locations = [");
for (var i=0; i<locations.length; i++)
{
    var innerdelimiter = "";
    var line = delimiter + "[";   
    for (var j=0; j<locations[i].length;j++)
    {
       line += innerdelimter + locations[i][j];
       innerdelimiter = ",";
    }
    line += "]";
    console.log(line);
    delimiter = "   ,";
}
console.log("];");

次のような2番目のオプションのデータ:

var delimiter = "    ";
console.log("var locations = [");
for (var key in locations)
{
    console.log(delimiter + "{" + key + ":" + locations[key] + "}");
    delimiter = "   ,";
}
console.log("];");
于 2012-12-04T20:39:22.623 に答える