2011-12-03 11 views
1

進出口使用此「地圖」上JS:在JavaScript中使用字符串作爲地圖的KEY

var myMap = new Object(); 
    myMap[key1]=value1; //like this n times... 

,但我想用密鑰作爲兩個字符串的某種組合的意思:

function getMapValue(str1,str2){...} 

我不介意連接兩個字符串成一個長字符串和使用功能與長串

什麼想法?

+1

我不太知道它是什麼你問這裏。你可以嘗試澄清一下你的問題,還是提供一個更完整的例子? – rossipedia

+0

我只想使用這個自我生成的地圖。我想關鍵是字符串,也可能轉換成字符串整數...只是在尋找的怎麼會大功告成的想法.. – Itzik984

回答

2

可以使地圖的地圖(只是一定要檢查中間地圖存在訪問時)

var myMap = {}; //dont use "new Object()". It is evil. 

function insert(k1, k2, v){ 
    if(!(k1 in myMap)){ myMap[k1] = {}; } 
    myMap[k1][k2] = v; 
} 

function get(k1, k2){ 
    return myMap[k1] && myMap[k1][k2]; 
} 

如果你想連接兩個子成一個單一的一個,你可以用加運算符來連接事物。

var customKey = k1 + '|' + k2; 

只要確保您的分隔符不能用於正常的鍵以避免衝突。

+0

'MYMAP [K] && MYMAP [K] [K2]'將返回true或false,而不是[k1] [k2]的值 – jontro

+1

@jontro:在JavaScript中,&&'返回左操作數,如果它是虛假的,則返回右操作數。這種'&&'和'||'的使用是一個正常的JS模式。 – hugomg

+0

對不起,我糾正了。 – jontro

-1

如果我給你的權利,下面的應該有所幫助:

var myMap = {"key1" : "something1", "key2" : "something2"}; 

爲一鍵獲取值,您在使用,或者:return myMap.key1;

或者:return myMap.["key1"];

如果你有/ did:myMap["key1key2"] = "MagicHappens!";

您可以使用myMap.key1key2來獲得值或myMap["key1key2"],甚至是return myMap["key1"+"key2"];

或者:

var x = "key1"; 
var y = "key2"; 
return myMap[x+y]; 

在你的getter函數,你得到的,然後可以直接使用按鍵的兩個變量。

相關問題