2012-07-08 79 views
2

在數組中獲得唯一字符串的最佳方式是什麼?有些時候,它是有道理這樣做的途徑之一,這裏有3:將密鑰收集到數組JavaScript中的最佳方法?

  1. 創建一個數組,併爲你把每一個新項目,首先檢查是否_.indexOf(array, newItem) == -1
  2. 創建一個哈希,所有的值作爲true,如{key1: true, key2: true},然後_.keys(hash)
  3. 推動所有項目陣列中的,那麼在運行keys = _.uniq(keys)

上面的代碼使用underscore.js助手。有了JavaScript結構/虛擬機的內部知識,以及一些正式的算法知識,可能會使這一點毫無意義,但我還沒有。我確定它不同於瀏覽器和瀏覽器(和節點),但也許有一個首選的方法。有任何想法嗎?

回答

6

第一個解決方案必須遍歷數組的每個元素,爲數組的每個元素循環。這使得複雜性爲O(n²)

第二個可能是最好的,因爲它只循環數組,然後循環通過鍵。這基本上是O(2n),這只是O(n)

第三個取決於uniq()的效率。例如,它可能只是方法2的實現。

+0

在小規模(每個對象少於50個鍵)時,第一個解決方案似乎比節點中第二個解決方案的速度快3倍以上:https:// gist.github.com/4633028。 – 2013-01-25 09:19:00

相關問題