如何按阈值范围查找JS数组数值元素并删除其与左侧相邻元素
问题原因
你现有代码存在三个核心问题:
findIndex仅能匹配第一个符合条件的元素,无法处理多组符合要求的待删除项a.includes(range)是判断字符串是否包含阈值对应的字符,不是数值大小比较逻辑- 条件判断
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
相关产品推荐
相关产品推荐

