从数组中获取最接近的数

阅读时长 3 分钟读完

有时候我们需要从一个数字数组中找到最接近指定值的数字。这在前端开发中经常用到,例如实现搜索建议、动态筛选等功能。

方法一:遍历数组

最简单直接的方法是遍历数组,然后计算每个数字与目标值的差值,最后找到差值最小的那个数字。

示例代码:

-- -------------------- ---- -------
-------- ----------------------- ------- -
  --- ------- - ---------
  --- -----------

  --- ---- - - -- - - ----------- ---- -
    ----- ---- - --------------- - --------

    -- ----- - -------- -
      ------- - -----
      ---------- - -------
    -
  -

  ------ -----------
-

----- --- - --- -- -- -- ---
----- ------ - --
----------------------------------- --------- -- -- -

该方法的时间复杂度为 O(n),适用于小型数组。但是对于大型数组或需要频繁调用的场景,效率较低。

方法二:二分查找

当数组已经排序时,可以使用二分查找来优化查找速度。

示例代码:

-- -------------------- ---- -------
-------- ----------------------- ------- -
  --- ---- - --
  --- ----- - ---------- - --

  ----- ----- - - - ------ -
    ----- --- - ---------------- - ------ - ---

    -- --------- --- ------- -
      ------ ---------
    - ---- -- --------- - ------- -
      ---- - ----
    - ---- -
      ----- - ----
    -
  -

  -- ------------------- - ------- -- ------------------- - -------- -
    ------ ----------
  - ---- -
    ------ -----------
  -
-

----- --- - --- -- -- -- ---
----- ------ - --
----------------------------------- --------- -- -- -

该方法的时间复杂度为 O(log n),适用于大型数组或需要频繁调用的场景。但是该方法要求数组已经排序,如果数组未排序,则需要先进行排序操作。

总结

从数组中获取最接近的数可以使用遍历和二分查找两种方法。遍历方法简单直接,适用于小型数组;而二分查找方法则可以优化查找速度,适用于大型数组或需要频繁调用的场景。需要注意的是,二分查找方法要求数组已经排序,因此在使用时需要考虑到排序操作的时间复杂度。

示例代码中的两个方法都只返回了一个数字,实际应用中可能需要返回多个最接近的数字,或者其他相关信息。在实际开发中需要根据具体需求进行修改和完善。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/11699

纠错
反馈