如何从数组中移除指定索引范围内的元素?
实现移除数组指定范围元素的函数
你要实现的removeVals函数逻辑非常明确:传入原数组、移除范围的起始索引、移除范围的结束索引(索引从0开始,范围包含首尾边界),返回移除对应元素后的新数组。参考示例的入参和返回值:
入参:
removeVals([20, 30, 40, 50, 60, 70], 2, 4)
返回值:[20, 30, 70]
逻辑说明:移除索引2、3、4对应的三个元素40、50、60,剩余元素按原顺序拼接。
推荐实现(不修改原数组,无副作用)
直接用数组slice方法做分段拼接,不会改动传入的原始数组,适合绝大多数业务场景:
function removeVals(arr, start, end) { // 非法索引兜底,避免运行报错 if (start < 0 || end >= arr.length || start > end) { return [...arr] } // 拼接「起始索引前的片段」和「结束索引后一位开始的片段」 return [ ...arr.slice(0, start), ...arr.slice(end + 1) ] }
直接调用测试就能得到你要的结果:
const res = removeVals([20, 30, 40, 50, 60, 70], 2, 4) console.log(res) // 输出 [20, 30, 70]
可选实现(允许修改原数组)
如果你不需要保留原始数组,可以用splice方法直接在原数组上做删除,性能会略好一点:
function removeVals(arr, start, end) { if (start < 0 || end >= arr.length || start > end) { return arr } // splice第二个参数是要删除的元素个数,计算方式为 结束索引-起始索引+1 arr.splice(start, end - start + 1) return arr }
注意:这个写法会直接修改你传入的原数组,使用前要确认不会影响其他依赖原数组的逻辑。
内容的提问来源于stack exchange,提问作者dada
相关产品推荐
相关产品推荐

