2010-08-02 4 views
0

j'ai obtenu 2 variables javascript:valeurs Sélection de 2 variables javascript

var list1 = "john doe|bill williams|poll bregg|michael jordan"; 
var list2 = "analytic|trader|doctor|athlete"; 

Nous devons prendre à l'esprit, que les relations entre ces deux variables sont que les noms et professions sont placées dans le même ordre, par exemple. Poll Bregg est un médecin, mais John Doe est une analyse. Puis j'ai besoin de créer une fonction, ce qui va me donner la 2ème valeur de la variable basée sur la 1ère valeur sélectionnée de la variable. Par exemple:

function getProfession(name){ 
    ... 
    return profession; 
} 

Pouvez-vous suggérer une solution ou donner une idée ?! Peut-être que je dois utiliser array of array ou smth comme ça ?!

+0

Oui, vous pouvez le faire en utilisant 'split', lisez à ce sujet: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/split Mais vous feriez mieux d'utiliser' JSON' . Comme 'var JSON = {" john doe ":" analytique "}' ... etc – Anders

Répondre

2

Vous pouvez trouver plus facile d'utiliser la nature Hashtable de JavaScript objets à la place:

var professions = {};    // our hashtable 

var list1 = "john doe|bill williams|poll bregg|michael jordan".split('|'); 
var list2 = "analytic|trader|doctor|athlete".split('|'); 

for (var i = 0; i < list1.length; i++) { 
    professions[list1[i]] = list2[i]; 
} 

Ensuite, vous pouvez obtenir les professions en utilisant la syntaxe d'indice :

alert(professions['john doe']); // returns "analytic" 
+0

La manière la plus simple! –

0

Son mieux d'utiliser le tableau comme celui-ci:

var persons = new Array(); 
persons[0] = new Array(); 
persons[0]["name"] = "John Doe"; 
persons[0]["proffesion"] = "Analytic"; 
persons[1] = new Array(); 
persons[1]["name"] = "Bill Williams"; 
persons[1]["proffesion"] = "Trader"; 
etc... 

et que vous pouvez itérer comme un tableau normal:

for(i in persons) 
    alert(persons[i]["name"]+" - "+persons[i]["proffesion"]); 
+0

Il est probablement préférable d'utiliser 'persons [0] = {};' au lieu de 'persons [0] = new Array();' , car vous n'utilisez aucune des propriétés du tableau pour ces objets. –

+0

... Et en général, les boucles 'for ... in' ne sont pas considérées comme une bonne pratique lors de l'itération sur les éléments du tableau. –

1
var persons = {}; 
var list1 = "john doe|bill williams|poll bregg|michael jordan".split("|"); 
var list2 = "analytic|trader|doctor|athlete".split("|"); 
for (var i in list1) { 
    persons[list1[i]] = list2[i]; 
} 

function getProfession(name) { 
    return persons[name]; 
} 
+0

Meilleure réponse, mais en double. Quoi qu'il en soit, merci! –

1

Vous pouvez le faire de cette façon, en utilisant fourchues et indexOf fonctions Javascript:

var list1 = "john doe|bill williams|poll bregg|michael jordan"; 
var list2 = "analytic|trader|doctor|athlete"; 

var names = list1.split("|"); 
var professions = list2.split("|"); 

function getProfession(name){ 
    var index = names.indexOf(name); 

    return professions[index]; 
} 

alert(getProfession('poll bregg')); 

Exemple complet à: http://jsfiddle.net/zQXjd/

+0

Comme quand les gars montrent de vrais exemples dans jsfiddle par exemple! –

0

au lieu de 2 variabled vous pouvez utiliser un objet pour obtenir votre fonctionnalité -

var profession = { "john doe" : "analytic", 
      "bill williams" : "trader", 
      "poll bregg" : "doctor", 
      "michael jordan" : "athlete" 
     }; 

Puis, en fonction, vous pouvez l'utiliser comme -

function getProfession(name) { 
    return profession[name]; 

} 

Du point de vue maintainence aussi, cela est plus facile pour vous d'ajouter de nouveaux éléments et de supprimer des éléments existants.

1

le code pourrait être comme ceci.

var list1 = "john doe|bill williams|poll bregg|michael jordan"; 
var list2 = "analytic|trader|doctor|athlete"; 
var name_array=new Array(); 
var profession_array=new Array(); 
name_array=list1.split("|");  
profession_array=list2.split("|");  
function getProfession(name)  
{ 
    for (i=0;i<name_array.length;i++) 
    { 
     if(name==name_array[i]) 
     { 
      return profession_array[i]; 
     } 
    } 
    return "Not in list";  
} 

Le code est possible si seules les données sont dans le format spécifié.

+0

Regarde trop dur, mais de toute façon fonctionne pour moi! –

Questions connexes