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

如何创建可移除数组中多个指定数字的JavaScript函数?

解决JavaScript数组移除多个指定元素的问题

原函数的问题在于仅接收单个待移除元素参数,无法处理调用时传入的多个元素。要实现移除多个指定数字的功能,需要调整参数接收逻辑,收集所有待移除的元素,以下是几种可行的修改方案:

方案一:使用剩余参数+filter方法(纯函数,不修改原数组)

这种方式返回新数组,不会改变传入的原数组,更符合函数式编程风格:

function removeFromArray(arr, ...toRemove) {
  return arr.filter(item => !toRemove.includes(item));
}

调用示例:

removeFromArray([1, 2, 3, 4], 3, 2); // 返回 [1, 4]

方案二:保持原函数修改原数组的逻辑(兼容原行为)

如果需要延续原函数直接修改传入数组的行为,可以结合剩余参数和Set优化查找效率:

function removeFromArray(arr, ...toRemove) {
  const removeSet = new Set(toRemove);
  let i = 0;
  while (i < arr.length) {
    if (removeSet.has(arr[i])) {
      arr.splice(i, 1);
    } else {
      i++;
    }
  }
  return arr;
}

用Set存储待移除元素,能大幅提升查找效率(尤其是待移除元素较多时),循环逻辑和原函数一致,遇到匹配元素就删除,否则索引递增。

兼容旧环境的写法(使用arguments)

如果需要兼容不支持ES6剩余参数的环境,可以用arguments对象获取所有参数:

function removeFromArray(arr) {
  const toRemove = Array.prototype.slice.call(arguments, 1);
  const removeSet = new Set(toRemove);
  let i = 0;
  while (i < arr.length) {
    if (removeSet.has(arr[i])) {
      arr.splice(i, 1);
    } else {
      i++;
    }
  }
  return arr;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:08:32