2013-06-22 50 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个,则无需启用实验功能。