在数组中获取唯一字符串的最佳方法是什么?有时候,有很多方法可以做到这一点,这里有3个:
_.indexOf(array, newItem) == -1
true
,例如{key1: true, key2: true}
,然后_.keys(hash)
keys = _.uniq(keys)
上面的代码使用的是underscore.js个助手。
了解JavaScript构造/ vm的内部结构,以及一些正式的算法知识,可能会让这变得毫无疑问,但我还没有。我确信它在浏览器(和节点)之间有所不同,但也许有一种首选方法。有什么想法吗?
答案 0 :(得分:6)
对于数组的每个元素,第一个解决方案必须循环遍历数组的每个元素。这使得O(n²)
的复杂性。
第二个可能是最好的,因为它只循环遍历数组,然后遍历键。这基本上是O(2n)
,只是O(n)
。
第三个取决于效率uniq()
的效率。例如,它可能只是方法2的实现。