美文网首页JavaScript 进阶营让前端飞
还在用indexOf?这有更好的替代品

还在用indexOf?这有更好的替代品

作者: Indomi | 来源:发表于2019-11-18 16:59 被阅读0次

    最近在刷LeetCode的过程中,越来越发现ES6新增的Set/Map数据结构非常方便。于是乎,想起来平常使用indexOf,是不是有更好的替代方案呢?

    利用Map数据结构实现查找也许更高效(当然也有弊端,看下文)

    Map实现数组的查找

    Array.prototype._indexOf = function (key) {
      const arr = this
      const idxMap = new Map()
      // 具体小细节边界判断都忽略,实现功能为主
      arr.forEach((v, i) => {
        idxMap.set(v, i)
      })
      return idxMap.has(key) ? idxMap.get(key) : -1
    }
    

    主要优点

    • 利用散列表的优势,当数据量大时查出一个元素很高效


      数组长度为100w的对比

    主要缺点

    • 对于有相同的数组元素的情况,后一个会覆盖前一个,需要做额外的一个判断与处理
    • 显而易见的对于数据量较小的情况下,实现一个这样的方法没有必要

    结论

    • 使用indexOf,还是利用Map,需要结合实际的需求来做,但是利用Map实现一个indexOf,也不失为一个好的想法方向

    相关文章

      网友评论

        本文标题:还在用indexOf?这有更好的替代品

        本文链接:https://www.haomeiwen.com/subject/ofebictx.html