You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何查找数组中最接近指定阈值的左侧最大数值

JavaScript实现小于阈值的最大数值查找函数

实现思路

  • 首先校验阈值是否存在于目标数组中,存在则直接返回阈值
  • 过滤出数组中所有小于阈值的元素
  • 对过滤后的元素取最大值,即为最接近阈值的左侧数值,若过滤结果为空可返回null等自定义兜底值

完整代码

// 目标测试数组
let a = [5, 5, 9, 5, 6, 888, 98, 2, 6];

/**
 * 查找最接近阈值的左侧数值
 * @param {Array} arr 目标数组
 * @param {Number} threshold 阈值
 * @returns 阈值存在则返回阈值,不存在返回小于阈值的最大值,无符合值返回null
 */
function findClosestLeft(arr, threshold) {
  // 阈值存在直接返回
  if (arr.includes(threshold)) return threshold;
  // 过滤所有小于阈值的元素
  const filtered = arr.filter(item => item < threshold);
  // 无符合条件元素返回兜底值
  if (!filtered.length) return null;
  // 返回过滤数组的最大值
  return Math.max(...filtered);
}

// 测试示例:阈值为999
console.log(findClosestLeft(a, 999)); // 输出888

原有代码问题说明

你给出的map方法是对数组每个元素做映射返回新数组,只能得到每个元素是否大于等于900的布尔值数组,无法直接得到目标结果,所以我们替换为filter过滤+Math.max取最大值的逻辑即可。

补充:如果你的使用场景下目标数组是已排序的,可改用二分查找实现,处理大数组时性能更优。

内容的提问来源于stack exchange,提问作者user7521964

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:54:02