2010-08-02 29 views
0

我有2個JavaScript的變量:選擇值

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

我們必須採取記住,這兩個變量之間的關係是名字和職業放置在相同的順序,如:民意調查bregg是一名醫生,但約翰·多伊是一個分析。

比我需要創建一個函數,它將根據第一個變量選擇值給我第二個變量值。例如:

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」:「analytic」}'...... etc – Anders 2010-08-02 09:13:37

回答

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

最簡單的方法! – 2010-08-02 10:04:57

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();''' ,因爲你不會使用這些對象的任何數組屬性。 – 2010-08-02 09:25:47

+0

...一般來說,在循環訪問數組元素時,for ... in循環不被認爲是好的做法。 – 2010-08-02 09:28:42

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

最好的答案,但重複。不管怎樣,謝謝! – 2010-08-02 10:06:47

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中展示實例的傢伙一樣! – 2010-08-02 10:07:22

0

,而不是2 variabled你可以使用一個對象獲得您的功能 -

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

然後在功能,您可以使用它作爲 -

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

} 

但從maintainence點也,這是更容易爲你添加新的元素和刪除現有的元素。

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

看起來太難了,但無論如何都適合我! – 2010-08-02 10:05:35