java - JavaScript中是否有类似Java Set的数据结构?

标签 java javascript dojo set

<分区>

我想在 JavaScript 中使用一种可用于存储 ID 数量的数据结构。我应该能够检查该集合中是否已存在某个键,例如 Java 集合。

我想实现如下相同的行为(这段代码是用 Java 编写的):

Set<String> st = new HashSet<String>();
//add elemets

if(st.contains("aks") ){
  //do something
}

我想要一个与上述代码等效的 JavaScript/dojo。

最佳答案

我已经编写了一个 JavaScript HashSet 实现,它可以执行您想要的操作并允许任何对象成为该集合的成员:http://code.google.com/p/jshashtable

但是,如果您只需要存储字符串,您可以通过将集合成员存储为普通对象的属性名称来做一些更简单的事情。例如:

function StringSet() {
    var setObj = {}, val = {};

    this.add = function(str) {
        setObj[str] = val;
    };

    this.contains = function(str) {
        return setObj[str] === val;
    };

    this.remove = function(str) {
        delete setObj[str];
    };

    this.values = function() {
        var values = [];
        for (var i in setObj) {
            if (setObj[i] === val) {
                values.push(i);
            }
        }
        return values;
    };
}

关于实现的注释:valStringSet 实现内部使用的一个对象,它对每个集合都是唯一的。将其属性名称构成集合 (setObj) 的对象的属性值与 val 进行比较,无需进行 hasOwnProperty() 检查并保证只有已添加到集合中的字符串才会显示在 values 中。

示例用法:

var set = new StringSet();
set.add("foo");
set.add("bar");

alert(set.contains("foo")); // true
alert(set.contains("baz")); // false

set.values(); // ["foo", "bar"], though not necessarily in that order
set.remove("foo");
set.values(); // ["bar"]

关于java - JavaScript中是否有类似Java Set的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4343746/

相关文章:

java - Libgdx - 屏幕截图质量差

java - 德尔福: Constructing Abstract Class like Java

javascript - Dojo 全局化和 nls key

java - 在不同的类中使用 ActionListener

javascript - asp.net mvc - 如何使用 Javascript 创建多个 DropDownList

javascript - 动画 Canvas 点

JavaScript 循环动画间隔

javascript - 在 Intern 3.x 中测试 Dojo 1.x 应用程序

javascript - 事件处理程序上的 dojo 不适用于多个按钮

java - 内置抽屉导航 Activity (点击事件)