2010-08-02 3 views
0

У меня 2 JavaScript переменные:значения Выбор из 2 яваскрипта переменных

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

Мы должны принять во внимание, что отношения между этими двумя переменными является то, что имена и профессии расположены в том же порядке, например. Опрос bregg является врачом, но john doe является аналитическим.

Чем мне нужно создать функцию, которая дает мне второе значение переменной, основанное на первом выбранном значении переменной. Например:

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

Вы можете найти решение или дать подсказку? Возможно, мне нужно использовать массив массива или smth?

+0

Да, вы можете сделать это, используя 'split', прочитайте об этом: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/split Но вам лучше использовать' JSON' , Как 'var JSON = {« john doe »:« аналитический »}' ... и т. Д. – Anders

ответ

2

Вы можете найти его проще использовать Хеш характер JavaScript объектов:

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

Затем вы можете получить профессию, используя синтаксис подстроки :

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

Самый простой способ! –

0

Его лучше использовать массив как это:

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... 

и чем вы можете перебирать его как обычный массив:

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

Возможно, лучше использовать 'persons [0] = {};' вместо 'persons [0] = new Array();' , потому что вы не будете использовать какие-либо свойства массива для этих объектов. –

+0

... И вообще, циклы 'for ... in' не считаются хорошей практикой при повторении элементов массива. –

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

Лучший ответ, но дубликат. В любом случае, спасибо! –

1

Вы можете сделать таким образом, используя расщепленные и IndexOf 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')); 

Полный пример в: http://jsfiddle.net/zQXjd/

+0

Например, когда ребята демонстрируют реальные примеры в jsfiddle, например! –

0

вместо 2 variabled вы можете использовать один объект для получения вашей функциональности -

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

Тогда в функции вы можете использовать это как -

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

} 

С точки ОБСЛУЖИВАНИЕ зрения также, это легче для вас, чтобы добавить новые элементы и удалить существующие элементы.

1

код может быть таким.

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";  
} 

Код может быть указан только в тех случаях, когда данные указаны в указанном формате.

+0

Выглядит слишком сложно, но все равно работает для меня! –

Смежные вопросы