2013-06-22 40 views
3

我一直在尋找答案,但我只能得到有關Google地圖API的結果。我正嘗試在JavaScript中使用映射將整數映射到字符串。一切工作正常在Firefox,但在鉻我在控制檯收到一條錯誤消息:Google Chrome中沒有定義地圖()

Uncaught ReferenceError: Map is not defined

下面是一段基準代碼:

var NameMap; 
var DistanceMap; 

function FillMaps(){ 
    NameMap = new Map(); 
    DistanceMap = new Map(); 

    NameMap.set(01, "Araba/Álava"); 
} 

function CheckName(_field){ 
    var value = document.getElementsByName(_field.name).item(0).value; 
    var location = value.charAt(0) + value.charAt(1); 
    var result = NameMap.get(parseInt(location)); 
    if(result == undefined){ 
     result = "Unknown"; 
    } 
    document.getElementById('loc').innerHTML = result; 
} 

回答

0

爲什麼不使用一個簡單的數組?

var NameMap; 
var DistanceMap; 

function FillMaps(){ 
    NameMap = new Array(); 
    DistanceMap = new Array(); 

    NameMap[01]="Araba/Álava"; 

} 

function CheckName(_field){ 
    var value = document.getElementsByName(_field.name).item(0).value; 
    var location = value.charAt(0) + value.charAt(1); 
    var result = NameMap[parseInt(location)]; 
    if(result == undefined){ 
     result = "Unknown"; 
    } 
    document.getElementById('loc').innerHTML = result; 
} 
+0

確實,我可以使用一個數組作爲我的例子doh!但我可能需要將字符串映射到未來的字符串,任何想法用chrome修復它? – Nick

+0

對象可用於此目的。一個數組也可以做到這一點,但這是不好的做法(參見http://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/)。 Map沒有出現在[javascript reference](http://www.w3schools.com/jsref/)中,我認爲它是由Firefox添加的,儘管它甚至不出現在mozilla參考中。 – user2313067

5

一些ES和諧的功能,包括Map(),在Chrome瀏覽器在沒有已經存在2011年底。它只是默認禁用。

要啓用該功能,請訪問chrome://flags/,並啓用「啓用實驗性JavaScript」。然後重新啓動瀏覽器並享受新功能。

另一種方法是在命令行上傳遞--js-flags=--harmony標誌。例如:

chromium --js-flags=--harmony 
chrome.exe --jsflags=--harmony 
1

地圖目前在Chrome版本38(beta版8月29日 - 2014年),這意味着它會得到穩定的很快。如果您有38個,則無需啓用實驗功能。