2010-11-28 39 views
8

我已经搜查相当长一段时间的集合API(列表,集)的JS和令人惊讶的,我只能这样:http://www.coffeeblack.org/work/jscollections/JavaScript Collections API?

这正是我一直在寻找,但我不知道为什么不jQuery提供的?我在想什么?或者,也许,我的搜索技术有多无效?我知道数组支持弹出()和推(),但我需要包含()例如。

+2

仅供参考 - coffeeblack集合库对我来说是一个不行,因为它为javascript对象类型的原型添加了属性。这打破了一些基本的jQuery功能,如$ .css(地图) – 2011-02-16 04:00:41

+1

还有https://github.com/kriskowal/collections – Luis 2012-08-19 01:31:23

回答

1

由于javascript有数组[]和关联数组{},因此大多数数据结构的需求已经解决。该数组解决了有序列表,通过数字索引进行快速访问,而关联数组可以被视为无序哈希映射,并解决了字符串键的快速访问问题。

对我来说,涵盖了95%的数据结构需求。

5

jQuery的主要焦点是DOM。它不会也不应该试图将所有的东西都交给所有的人,所以它在收集支持方面没有太多的东西。

Google地图和Google套,我想耍赖点你在我自己的这些实现的方向:http://code.google.com/p/jshashtable/

关于名单,Array提供了很多的你所需要的。最喜欢的方法,你可能要为阵列,您可以在几行拼凑一个方法(其中大部分是对付IE < = 8的缺乏支持,为indexOf()法):

Array.prototype.contains = Array.prototype.indexOf ? 
    function(val) { 
     return this.indexOf(val) > -1; 
    } : 
    function(val) { 
     var i = this.length; 
     while (i--) { 
      if (this[i] === val) { 
       return true; 
      } 
     } 
     return false; 
    }; 

["a", "b", "c"].contains("a"); // true 
6

你可以试试js_cols,这是一个JavaScript的集合库。