0

0

js 怎么用pull移除数组中指定的值

小老鼠

小老鼠

发布时间:2025-08-02 09:19:01

|

408人浏览过

|

来源于php中文网

原创

在javascript中移除数组中指定值的方法有多种,1. 使用filter方法创建新数组,通过valuestoremove.includes(item)排除目标值,适用于基本类型且不修改原数组;2. 使用splice结合倒序循环修改原数组,避免索引错位,适合需改变原数组的场景;3. 对于对象元素,需自定义比较函数,如pullby函数利用comparator判断相等性;4. 处理null或undefined时,用!== null仅移除null,而!= null可同时移除null和undefined;5. 性能方面,filter通常更稳定,splice在大数组少元素保留时可能更高效,实际应根据数据规模和需求测试选择,最终方案需权衡是否修改原数组、数据类型及性能影响,以上方法共同解决了不同场景下的数组元素移除问题。

js 怎么用pull移除数组中指定的值

在 JavaScript 中,从数组中移除指定的值,可以使用多种方法。

pull
这个词在 JavaScript 数组的标准方法中并不存在,所以我们需要借助一些技巧或者自定义函数来实现类似的功能。核心思路是找到数组中与指定值相等的元素,然后将其移除。

解决方案

最直接的方法是使用

filter
方法创建一个新的数组,其中不包含需要移除的值。

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

// 示例
let myArray = [1, 2, 2, 3, 4, 2, 5];
myArray = pull(myArray, 2, 4);
console.log(myArray); // 输出: [1, 3, 5]

这种方法简单易懂,但会创建一个新的数组,如果数组很大,可能会影响性能。

另一种方法是直接修改原数组,可以使用

splice
方法结合
indexOf
循环查找并移除。这种方法会改变原数组。

function pullMutate(arr, ...valuesToRemove) {
  for (let i = arr.length - 1; i >= 0; i--) {
    if (valuesToRemove.includes(arr[i])) {
      arr.splice(i, 1);
    }
  }
  return arr;
}

// 示例
let myArray = [1, 2, 2, 3, 4, 2, 5];
pullMutate(myArray, 2, 4);
console.log(myArray); // 输出: [1, 3, 5]

注意这里倒序循环,避免在使用

splice
删除元素后索引错位的问题。

如何处理数组中的复杂对象?

如果数组中存储的是对象,而不是基本类型,那么直接使用

filter
indexOf
可能无法达到预期效果,因为对象比较的是引用。这时,需要提供一个自定义的比较函数。

QIMI奇觅
QIMI奇觅

美图推出的游戏行业广告AI制作与投放一体化平台

下载
function pullBy(arr, valuesToRemove, comparator) {
  return arr.filter(item => !valuesToRemove.some(value => comparator(item, value)));
}

// 示例
let myArray = [{id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Charlie'}, {id: 2, name: 'Bob'}];
let valuesToRemove = [{id: 2, name: 'Bob'}];

myArray = pullBy(myArray, valuesToRemove, (a, b) => a.id === b.id && a.name === b.name);
console.log(myArray); // 输出: [{id: 1, name: 'Alice'}, {id: 3, name: 'Charlie'}]

这个例子中,

pullBy
函数接收一个比较函数
comparator
,用于比较数组中的元素和需要移除的值。

filter
splice
哪个性能更好?

通常来说,

filter
创建新数组的方式在某些情况下可能更快,因为它避免了频繁的数组元素移动。但是,如果数组非常大,且需要移除的元素很多,
splice
直接修改原数组的方式可能会更有效率,因为它不需要复制整个数组。实际应用中,最好根据具体情况进行性能测试,选择最适合的方法。另外,现代 JavaScript 引擎对这些方法的优化程度也可能影响最终结果。

如何处理数组中
null
undefined
值?

在处理包含

null
undefined
值的数组时,需要特别注意。直接使用
===
==
可能会导致一些意想不到的结果。例如,如果你想移除数组中的所有
null
值,可以这样做:

function pullNull(arr) {
  return arr.filter(item => item !== null);
}

// 示例
let myArray = [1, null, 2, undefined, 3, null];
myArray = pullNull(myArray);
console.log(myArray); // 输出: [1, 2, undefined, 3]

注意,这里只移除了

null
undefined
仍然保留。如果要同时移除
null
undefined
,可以这样做:

function pullNil(arr) {
  return arr.filter(item => item != null); // 注意这里使用了 != 而不是 !==
}

// 示例
let myArray = [1, null, 2, undefined, 3, null];
myArray = pullNil(myArray);
console.log(myArray); // 输出: [1, 2, 3]

使用

!=
可以同时排除
null
undefined
,因为
null == undefined
的结果是
true

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

309

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

222

2025.10.31

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

236

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

458

2024.03.01

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

514

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5306

2023.08.17

clawdbot ai使用教程 保姆级clawdbot部署安装手册
clawdbot ai使用教程 保姆级clawdbot部署安装手册

Clawdbot是一个“有灵魂”的AI助手,可以帮用户清空收件箱、发送电子邮件、管理日历、办理航班值机等等,并且可以接入用户常用的任何聊天APP,所有的操作均可通过WhatsApp、Telegram等平台完成,用户只需通过对话,就能操控设备自动执行各类任务。

13

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8万人学习

Django 教程
Django 教程

共28课时 | 3.6万人学习

Excel 教程
Excel 教程

共162课时 | 14.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号