JS如何按条件移除数组元素并返回新数组 移除首个最小元素不改变顺序
问题分析
你当前的代码仅通过Math.min(...numbers)提取了数组的最小值,返回值是数值类型,自然无法得到目标数组。
实现方案
要满足需求只需要三步即可:
- 优先处理空数组的边界场景,避免后续逻辑报错
- 找到数组中最小值第一次出现的索引,满足多个最小值仅移除索引更小的要求
- 拆分原数组索引前后的部分拼接为新数组,全程不修改原数组,保留原有元素顺序
完整代码
function removeSmallest(numbers) { if (numbers.length === 0) return [] const minVal = Math.min(...numbers) const firstMinIndex = numbers.indexOf(minVal) // 用slice拆分拼接不修改原数组 return numbers.slice(0, firstMinIndex).concat(numbers.slice(firstMinIndex + 1)) }
效果验证
调用测试用例removeSmallest([5, 3, 2, 1, 4, 1]),输出结果为[5, 3, 2, 4, 1],和预期完全一致。
内容的提问来源于stack exchange,提问作者Djordje Djordjevic
相关产品推荐
相关产品推荐

