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

如何按阈值范围查找JS数组数值元素并删除其与左侧相邻元素

问题原因

你现有代码存在三个核心问题:

  1. findIndex仅能匹配第一个符合条件的元素,无法处理多组符合要求的待删除项
  2. a.includes(range)是判断字符串是否包含阈值对应的字符,不是数值大小比较逻辑
  3. 条件判断if(array > -1)属于错误写法,应该判断返回的下标值是否大于-1

修正后代码

const array = ["something", "6", "somethingelse", "130", "carrot", "89", "monkey", "57", "plane", "71"];
const threshold = 65; // 数值阈值

// 采用倒序遍历,避免删除元素导致后续下标偏移出错
for (let i = array.length - 1; i >= 0; i--) {
    const currentNum = Number(array[i]);
    // 校验规则:当前元素是有效数值、小于阈值、存在左侧相邻元素
    if (!isNaN(currentNum) && currentNum < threshold && i > 0) {
        array.splice(i - 1, 2);
    }
}

console.log(array); // 输出结果:["somethingelse", "130", "carrot", "89", "plane", "71"]

逻辑说明

  • 倒序遍历是为了规避正序删除元素后,后续元素下标前移导致的漏检问题
  • 先把元素转为数字类型,用isNaN过滤非数值内容,避免非数字字符串被误判为0
  • 增加i>0的边界校验,避免数值元素出现在数组首位时,删除不存在的左侧元素引发异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:42:02