当前位置:  开发笔记 > 编程语言 > 正文

那里有没有好的JavaScript哈希(代码/表)实现?

如何解决《那里有没有好的JavaScript哈希(代码/表)实现?》经验,为你挑选了2个好方法。

是的,我知道你可以在JavaScript中使用常规对象作为关联数组,但是我想使用更接近java的Map实现的东西(HashMap,LinkedHashMap等).可以将任何类型的数据用作密钥的东西.JavaScript实现中有没有好的哈希(代码/表)?



1> keparo..:

在javascript中,对象实际上是一个哈希实现.Java HashMap将是一个假的,所以我会挑战你重新考虑你的需求.

直答案是否定的,我不相信有很大的实现在JavaScript Java的HashMap中的.如果有,它必然是您可能想要或可能不想使用的库的一部分,并且您当然不需要包含一个库只是为了有一个哈希表.

所以,让我们继续写一个,只是为了检查问题.如果你愿意,你可以使用它.我们将首先编写一个构造函数,然后我们将捎带Array,它是Object,但是有一些有用的方法可以使这个例子变得过于繁琐:

function HashMap () {
    var obj = [];
    return obj;
}

var myHashMap = HashMap();

我们将直接从Java世界中添加一些方法,但在我们去的时候转换为javascript ...

function HashMap() {
    var obj = [];
    obj.size = function () {
        return this.length;
    };
    obj.isEmpty = function () {
        return this.length === 0;
    };
    obj.containsKey = function (key) {
        for (var i = 0; i < this.length; i++) {
            if (this[i].key === key) {
                return i;
            }
        }
        return -1;
    };
    obj.get = function (key) {
        var index = this.containsKey(key);
        if (index > -1) {
            return this[index].value;
        }
    };
    obj.put = function (key, value) {
        if (this.containsKey(key) !== -1) {
            return this.get(key);
        }
        this.push({'key': key, 'value': value});
    };
    obj.clear = function () {
        this = null;  // Just kidding...
    };
    return obj;
}

我们可以继续构建它,但我认为这是错误的方法.在一天结束时,我们最终使用javascript在幕后提供的内容,因为我们只是没有HashMap类型.在假装的过程中,它适用于各种额外的工作.

具有讽刺意味的是,使javascript成为一种有趣且多样化的语言之一就是它处理这种摔跤的难易程度.我们可以从字面上做任何我们想做的事情,如果它没有说明语言的欺骗性力量,那么这里的快速例子什么都不做.然而,鉴于这种力量,最好不要使用它.

我只是觉得javascript想要更轻松.我个人建议您在尝试实现适当的Java HashMap之前重新检查问题. Javascript既不想要也不提供.

记住原生替代品:

var map = [{}, 'string', 4, {}];

比较快捷方便.

另一方面,我不相信这里有任何硬性答案.此实现真正可能是完全可以接受的解决方案.如果你觉得你可以使用它,我会说给它一个旋转.但是如果我觉得我们拥有相当简单和更自然的手段,我就永远不会使用它......我几乎可以肯定我们这样做了.

旁注: 效率与风格有关吗?请注意性能命中 ..在HashMap.put()中有一个很大的O面对我们......不太理想的性能可能不是这里的显示器,你可能需要做在你甚至注意到现代浏览器的性能提升之前,一些非常雄心勃勃或拥有大量数据的东西.值得注意的是,当你对抗谷物时,操作往往效率会降低,几乎就像工作中存在自然熵一样.Javascript是一种高级语言,当我们遵守其约定时应该提供有效的解决方案,就像Java中的HashMap将是一个更自然和更高性能的选择.



2> Tim Down..:

我发布了一个独立的JavaScript哈希表实现,比这里列出的更为实用.

http://www.timdown.co.uk/jshashtable/

推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有