Выбор значений из 2 переменных javascript - PullRequest
0 голосов
/ 02 августа 2010

У меня есть 2 переменные javascript:

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

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

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

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

Можете ли вы предложить решение или дать подсказку ?!Возможно, я должен использовать массив массива или что-то вроде этого?!

Ответы [ 6 ]

2 голосов
/ 02 августа 2010

Вместо этого вам может быть проще использовать хеш-таблицу объектов 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"
1 голос
/ 02 августа 2010

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

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

Код возможен, если только данные имеют указанный формат.

1 голос
/ 02 августа 2010

Вы можете сделать это, используя функции Javascript split и indexOf:

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/

1 голос
/ 02 августа 2010
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 голосов
/ 02 августа 2010

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

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

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

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

}

С точки зрения сопровождения такжеэто проще для добавления новых элементов и удаления существующих элементов.

0 голосов
/ 02 августа 2010

Лучше использовать массив следующим образом:

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"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...