【Javascript】关于Hashmap

    Javascript在过去的版本中并没有原生支持hashmap,但可以用对象来模拟。只是键值只能是字符串,传入其他参数键值时会自动转换字符串。

    基本用法



    var map={};
    map['key1'] = 1;
    map['key2'] = 2;
    for (var key in map) {
    alert(map[key]); // 获取值
    }
    alert('key1' in map); // 检查存在性
    delete(map['key1']); // 删除一个元素
    alert(map['key1']);

    扩展用法

    如果希望键值可以任意,可以自己来构造一个生成键值的函数,自行加一层包装。

    对象map的注意点

    对象的方法也会被识别为对象元素,对in操作有影响,如对象默认继承的toString方法

    var map={};</span></pre>
    <pre class="prettyprint lang-javascript"><span class="str">alert('toString'</span> <span class="kwd">in</span><span class="pln"> map); // true

    这个问题可以用hasOwnProperty()方法解决。但因为考虑到可能正好对象存在hasOwnProperty属性,于是需要用{}.hasOwnProperty.call(map, '属性名');

    这里更好的方式是使用Object.create(null);于是就不会继承自Object了。

    <span class="kwd">var</span><span class="pln"> map </span><span class="pun">=</span> <span class="typ">Object</span><span class="pun">.</span><span class="pln">create</span><span class="pun">(</span><span class="kwd">null</span><span class="pun">);</span> <span class="kwd">for</span><span class="pun">(</span><span class="kwd">var</span><span class="pln"> key </span><span class="kwd">in</span><span class="pln"> map</span><span class="pun">){</span> <span class="com">// do something</span> <span class="pun">}

    Javascript的原生Map

    在Mozilla上有Map的定义,这个是在ECMAScript 2015 (6th Edition, ECMA-262)中初始定义,在ECMAScript 2017 Draft (ECMA-262)中完善的。浏览器也在陆续支持中,只能是是未来趋势,但要全面使用还有一段时间。

    参考文章

    1. 5 WAYS TO USE A JAVASCRIPT HASHMAP
    2. True Hash Maps in JavaScript


    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自枫芸志,原文地址《【Javascript】关于Hashmap
    标签:
    分享:

还没有人抢沙发呢~

无觅相关文章插件,快速提升流量