【问题标题】:Optimal way to collect keys into an Array JavaScript?将键收集到数组 JavaScript 的最佳方法?
【发布时间】:2012-07-08 09:31:45
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript arrays optimization


    【解决方案1】:

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

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

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

    【讨论】:

    • 在小规模(每个对象少于 50 个键)中,第一个解决方案似乎比节点中的第二个解决方案快 3 倍以上:gist.github.com/4633028
    猜你喜欢
    • 2010-09-22
    • 2018-08-31
    • 2011-02-18
    • 2023-03-26
    • 2011-02-02
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2020-01-06
    相关资源
    最近更新 更多