3

以下を作成し、を使用して参照できます

area[0].states[0] 
area[0].cities[0]

var area = [
        {
         "State"   : "Texas",
         "Cities"  : ['Austin','Dallas','San Antonio']
        },
        {
         "State"   :"Arkansas",
         "Cities"  : ['Little Rock','Texarkana','Hot Springs']
        }
       ] ;

州の名前がわかっている場合、それを参照として使用して都市の配列を取得できるように、「エリア」を再構築するにはどうすればよいですか?

ありがとう

編集私が受け取った回答で実装しようとしています(@ Eli Courtwright、@ 17 of 26、および@JasonBuntingに感謝します)私の質問が不完全であることに気付きました。インデックスで「state」を最初に参照するときに「area」をループバックする必要があります。次に「state」を選択したら、「state」の値を使用して構造をループバックし、関連する「state」を取得する必要があります。都市」。私は上記の構造から始めたいと思います(私は自由にそれを好きなように構築できますが)そして@eliの答えに似た変換を気にしません(私はその変換を機能させることができませんでしたが)。最初の質問でもっと完全になっているはずです。最初の選択ボックスが2番目の選択ボックスに入力される2つの選択ボックスを実装しようとしています...ページが読み込まれるときに、この配列構造をjsファイルに読み込みます。

4

4 に答える 4

2
var area = 
{
    "Texas" : { "Cities"  : ['Austin','Dallas','San Antonio'] },
    "Arkansas" : { "Cities"  : ['Little Rock','Texarkana','Hot Springs'] }
};

次に、次のことができます。

area["Texas"].Cities[0];
于 2008-09-11T20:27:53.730 に答える
2

(回答の助けを借りて、これを希望どおりに機能させました。以下のコードで、選択した回答の構文を修正しました)

以下のセレクトボックスで

<select id="states" size="2"></select>
<select id="cities" size="3"></select>

およびこの形式のデータ (.js ファイルまたは JSON として受信)

var area = [
    {
     "states"   : "Texas",
     "cities"  : ['Austin','Dallas','San Antonio']
    },
    {
     "states"   :"Arkansas",
     "cities"  : ['Little Rock','Texarkana','Hot Springs']
    }
   ] ;

これらの JQuery 関数は、州の選択ボックスの選択に基づいて、都市の選択ボックスにデータを入力します。

$(function() {      // create an array to be referenced by state name
 state = [] ;
 for(var i=0; i<area.length; i++) {
  state[area[i].states] = area[i].cities ;
 }
});

$(function() {
 // populate states select box
 var options = '' ;
 for (var i = 0; i < area.length; i++) {
  options += '<option value="' + area[i].states + '">' + area[i].states + '</option>'; 
 }
 $("#states").html(options);   // populate select box with array

 // selecting state (change) will populate cities select box
 $("#states").bind("change",
   function() {
    $("#cities").children().remove() ;      // clear select box
    var options = '' ;
    for (var i = 0; i < state[this.value].length; i++) { 
     options += '<option value="' + state[this.value][i] + '">' + state[this.value][i] + '</option>'; 
    }
    $("#cities").html(options);   // populate select box with array
   }        // bind function end
 );         // bind end 
});
于 2008-09-12T01:02:32.243 に答える
1

そもそもそのように作成したい場合は、

area = {
    "Texas": ['Austin','Dallas','San Antonio']
}

等々。既存のオブジェクトを取得してこれに変換する方法を尋ねている場合は、次のように言ってください。

states = {}
for(var j=0; j<area.length; j++)
    states[ area[0].State ] = area[0].Cities

上記のコードを実行した後、あなたは言うことができます

states["Texas"]

戻るだろう

['Austin','Dallas','San Antonio']
于 2008-09-11T20:26:52.610 に答える
1

これにより、州の名前を知っていることに基づいて都市の配列が得られます。

var area = {
   "Texas" : ["Austin","Dallas","San Antonio"], 
   "Arkansas" : ["Little Rock","Texarkana","Hot Springs"]
};

// area["Texas"] would return ["Austin","Dallas","San Antonio"]
于 2008-09-11T20:28:23.247 に答える