2010-08-02 3 views
0

나는이 개 자바 스크립트 변수를 가지고있다 :선택 값은

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

우리는이 두 변수 사이의 관계는 이름과 직업은 예를 들어, 같은 순서로 배치되어있는 것을 염두에 걸릴해야합니다. 설문 조사는 의사이지만, 의사는 분석입니다.

두 번째 변수 값을 첫 번째 변수로 선택한 값을 기준으로 함수를 만들어야합니다. 예 :

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

해결책을 제안하거나 단서를 줄 수 있습니까? 아마도이 배열이나 smth 배열을 사용해야합니다!

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

예,'split'을 사용하면됩니다. https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/split하지만 JSON을 사용하는 것이 좋습니다. . – Anders

답변

2

당신은 쉽게 자바 스크립트의 해시 테이블 특성을 사용하여 찾을 수 있습니다 :

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

을 당신은 일반 배열처럼 반복 할 수있는 것보다 :

+0

가장 쉬운 방법! –

0

그것의 더 나은은 다음과 같이 배열을 사용하는 대신 개체 :

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

'persons [0] = new Array(); 대신'persons [0] = {};'을 사용하는 것이 좋습니다. 왜냐하면 이러한 객체에 대해 배열 속성을 사용하지 않기 때문입니다. –

+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 자바 스크립트 기능을 사용하여,이 방법으로 수행 할 수 있습니다 당신은 하나 개의 개체를 사용할 수 있습니다 variabled http://jsfiddle.net/zQXjd/

+0

예를 들어 jsfiddle에서 실제 예제를 보여줄 때처럼! –

0

대신 2 :

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')); 

전체 예제를 기능을 사용하려면 -

var profession = { "john doe" : "analytic", 
      "bill williams" : "trader", 
      "poll bregg" : "doctor", 
      "michael jordan" : "athlete" 
     }; 
당신이 새로운 요소를 추가하고 기존 요소를 제거하기 또한,이 쉽게 볼 maintainence 관점에서

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

너무 열심히 보이지만 어쨌든 나를 위해 일합니다! –