5

我一直在寻找答案,但我只得到关于谷歌地图 API 的结果。我正在尝试使用 JavaScript 中的映射将整数映射到字符串。在 Firefox 中一切正常,但在 chrome 中,我在控制台中收到一条错误消息:

未捕获的 ReferenceError:未定义地图

下面是一段参考代码:

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;
}
4

4 回答 4

7

在 2011 年底,Chrome 中已经存在一些 ES 和谐功能,包括Map(),它只是默认禁用。

要启用该功能,请访问chrome://flags/并启用“启用实验性 JavaScript”。然后重新启动浏览器并享受新功能。

另一种方法是--js-flags=--harmony在命令行上传递标志。例如:

chromium --js-flags=--harmony
chrome.exe --jsflags=--harmony
于 2013-06-22T17:01:00.070 回答
1

地图现在是 Chrome 版本 38(截至 2014 年 8 月 29 日的测试版),这意味着它很快就会稳定下来。如果您有 38,则无需启用实验功能。

于 2014-08-29T14:34:35.977 回答
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;
}
于 2013-06-22T13:40:19.170 回答
0

“危险!实验技术!”

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

这里的代码可能可以为 Chrome 实现 Map,但我没有尝试过:

http://wiki.ecmascript.org/doku.php?id=harmony:simple_maps_and_sets

于 2013-06-22T16:41:00.457 回答