Tableau Javascript avec un mélange de littéraux et de tableaux

Je peux créer ce qui suit et le référencer en utilisant

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'] } ] ; 

Comment pourrais-je restructurer “zone” de sorte que si je connais le nom de l’état, je puisse l’utiliser dans une référence pour obtenir la liste des villes?

Merci

EDIT Essayer de mettre en œuvre avec les réponses que j’ai reçues (merci @Eli Courtwright, @ 17 sur 26 et @JasonBunting) Je réalise que ma question était incomplète. J’ai besoin de parcourir “zone” la première fois qui fait référence à “état” par index, puis lorsque j’ai la sélection de “l’état”, j’ai besoin de revenir en arrière sur une structure en utilisant la valeur de “état” pour obtenir le paramètre associé ” villes”. Je veux commencer par la structure ci-dessus (bien que je sois libre de la construire comme je le souhaite) et je ne crains pas une conversion similaire à la réponse de @ eli (bien que je n’aie pas pu obtenir cette conversion au travail). Aurait dû être plus complet en première question. Essayer d’implémenter 2 zones de sélection où la sélection de la première remplit la seconde … Je vais charger cette structure de tableau dans un fichier js lors du chargement de la page.

Si vous voulez simplement le créer ainsi pour commencer, dites simplement

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

etc. Si vous demandez comment convertir un object existant en object existant, dites simplement:

 states = {} for(var j=0; j 

Après avoir exécuté le code ci-dessus, vous pourriez dire

 states["Texas"] 

qui reviendrait

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

Ensuite, vous pouvez faire:

 area["Texas"].Cities[0]; 

(Avec l’aide des réponses, j’ai obtenu que cela fonctionne comme je le voulais. J’ai corrigé la syntaxe dans la réponse sélectionnée, dans le code ci-dessous)

Avec les cases de sélection suivantes

   

et données dans ce format (dans un fichier .js ou reçu en tant que JSON)

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

Ces fonctions JQuery rempliront la boîte de sélection de ville en fonction de la sélection de boîte de sélection d’état.

 $(function() { // create an array to be referenced by state name state = [] ; for(var i=0; i' + area[i].states + ''; } $("#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 += ''; } $("#cities").html(options); // populate select box with array } // bind function end ); // bind end }); 

Cela vous donnerait le choix de villes basé sur la connaissance du nom de l’état:

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