在 JavaScript 中,删除数组中内容为xxx的元素

假设要删除内容为aaa的元素。

在 JavaScript 中,有几种方法可以删除数组中内容为aaa的元素。以下是几种常用的方法:

方法1:使用 filter() 方法(推荐)

javascript 复制代码
let arr = ["aaa", "bbb", "ccc", "aaa", "ddd"];
arr = arr.filter(item => item !== "aaa");
console.log(arr); // ["bbb", "ccc", "ddd"]

方法2:使用 for 循环(从后往前遍历)

javascript 复制代码
let arr = ["aaa", "bbb", "ccc", "aaa", "ddd"];
for (let i = arr.length - 1; i >= 0; i--) {
    if (arr[i] === "aaa") {
        arr.splice(i, 1);
    }
}
console.log(arr); // ["bbb", "ccc", "ddd"]

方法3:使用 while 循环和 indexOf

javascript 复制代码
let arr = ["aaa", "bbb", "ccc", "aaa", "ddd"];
let index;
while ((index = arr.indexOf("aaa")) !== -1) {
    arr.splice(index, 1);
}
console.log(arr); // ["bbb", "ccc", "ddd"]

方法4:使用 reduce() 方法

javascript 复制代码
let arr = ["aaa", "bbb", "ccc", "aaa", "ddd"];
arr = arr.reduce((acc, current) => {
    if (current !== "aaa") {
        acc.push(current);
    }
    return acc;
}, []);
console.log(arr); // ["bbb", "ccc", "ddd"]

方法5:创建新数组(简单直接)

javascript 复制代码
let arr = ["aaa", "bbb", "ccc", "aaa", "ddd"];
let newArr = [];
for (let item of arr) {
    if (item !== "aaa") {
        newArr.push(item);
    }
}
console.log(newArr); // ["bbb", "ccc", "ddd"]

性能比较和建议

  • filter() 方法 是最简洁和易读的,适合大多数情况
  • 从后往前遍历 在使用 splice() 时性能更好,因为不会影响未遍历的索引
  • 如果数组很大,filter() 通常性能较好
  • 如果需要修改原数组而不是创建新数组,使用方法2或3

处理对象数组(如果需要)

如果数组包含对象,需要根据特定属性来删除:

javascript 复制代码
let arr = [
    {name: "aaa", id: 1},
    {name: "bbb", id: 2},
    {name: "aaa", id: 3}
];

// 删除 name 为 "aaa" 的对象
arr = arr.filter(item => item.name !== "aaa");
console.log(arr); // [{name: "bbb", id: 2}]

推荐使用 filter() 方法,因为它代码简洁、易读,且在大多数情况下性能良好。

相关推荐
meilindehuzi_a3 分钟前
LangChain.js 对话 Memory 实战:History 持久化、截断与摘要压缩
java·javascript·langchain
江畔柳前堤20 分钟前
具身智能全景深度指南(2026年9月版):从“会聊天的AI“到“能干活的机器“
大数据·javascript·图像处理·人工智能·分布式·智慧城市·原型模式
zhougl99622 分钟前
主流漏洞扫描工具
java
️学习的小王24 分钟前
Windows Claude Code 接入 Playwright‑MCP,调用本机Edge浏览器(避坑完整教程)
前端·windows·edge
liuyicenysabel28 分钟前
Grafana + Prometheus 分级告警配置设计(P0/P1/P2)
javascript·grafana·prometheus
律宏阔30 分钟前
CloakBrowser 开发踩坑笔记
前端·浏览器
Made in Haven71236 分钟前
HTML课程笔记补2
前端·笔记·html
Cry丶1 小时前
Vue 3 业务管理页面实战:组件拆分、父子通信与弹窗复用
前端·javascript·vue.js·父子通信·组件拆分·弹窗复用
一只小阿乐1 小时前
java 语法学习 1
java·开发语言·学习
雪芽蓝域zzs1 小时前
Vue前端配置路由通配捕获 404
前端·javascript·vue.js