2010-11-28 64 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的集合庫。