2

在数组中获取唯一字符串的最佳方法是什么?有时用多种方法中的一种来做是有意义的,这里有 3 种:

  1. 创建一个数组,对于您推送的每个新项目,首先检查是否_.indexOf(array, newItem) == -1
  2. 创建一个哈希,所有值都为true,例如{key1: true, key2: true},然后_.keys(hash)
  3. 推送数组中的所有项目,然后运行keys = _.uniq(keys)

上面的代码使用了 underscore.js助手。

了解 JavaScript 构造/虚拟机的内部知识,以及一些正式的算法知识,可能会让这变得不费吹灰之力,但我还没有。我确信它因浏览器(和节点)而异,但也许有一种首选方法。有任何想法吗?

4

1 回答 1

6

第一个解决方案必须针对数组的每个元素循环遍历数组的每个元素。这使得复杂度为O(n²).

第二个可能是最好的,因为它只循环遍历数组,然后循环遍历键。基本上O(2n)就是这样O(n)

第三个取决于效率如何uniq()。例如,它很可能只是方法 2 的实现。

于 2012-07-08T01:31:45.887 回答