如何使用JavaScript从列表中删除特定项

来源:前端技术作者:柬埔寨程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《如何使用JavaScript从列表中删除特定项》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何使用JavaScript从列表中删除特定项》有用,将其分享出去将是对创作者最好的鼓励。

在前端开发场景中,列表数据通常以数组形式存储,使用JavaScript从列表中删除特定项是十分常见的操作,不同的删除需求对应不同的实现方法,开发者可以根据实际场景选择最合适的方案。

如何使用JavaScript从列表中删除特定项

使用splice方法删除特定项

splice是JavaScript数组的原生方法,可以直接修改原数组,通过指定起始索引和删除数量来移除元素,适合已知要删除项索引的场景。

已知索引删除单个项

如果已经知道要删除的项在列表中的索引位置,可以直接调用splice方法,第一个参数是起始索引,第二个参数是删除的元素个数。

// 定义原始列表
let list = [1, 2, 3, 4, 5];
// 删除索引为2的元素,也就是值为3的项
let deletedItem = list.splice(2, 1);
console.log(list); // 输出 [1, 2, 4, 5]
console.log(deletedItem); // 输出 [3]

先查找索引再删除

如果不知道要删除项的索引,只知道要删除的具体值,可以先通过indexOf方法找到对应的索引,再使用splice删除。

let list = ['apple', 'banana', 'orange', 'grape'];
// 要删除的目标值
let target = 'orange';
// 查找目标值的索引
let index = list.indexOf(target);
// 判断索引是否存在,避免删除不存在的项
if (index !== -1) {
    list.splice(index, 1);
}
console.log(list); // 输出 ['apple', 'banana', 'grape']

需要注意的是,indexOf方法只会返回第一个匹配项的索引,如果列表中有重复的目标值,只会删除第一个匹配的项。

使用filter方法删除特定项

filter方法不会修改原数组,而是返回一个新数组,新数组中包含原数组中满足筛选条件的所有元素,适合需要保留原数组或者删除多个匹配项的场景。

删除单个匹配项

可以通过filter方法筛选出不等于目标值的元素,得到删除目标项后的新列表。

let list = [10, 20, 30, 20, 40];
let target = 20;
// 筛选出所有不等于target的元素,得到新数组
let newList = list.filter(item => item !== target);
console.log(newList); // 输出 [10, 30, 40]
console.log(list); // 输出 [10, 20, 30, 20, 40],原数组未被修改

删除符合复杂条件的项

filter方法的筛选条件可以自定义,适合删除符合特定规则的项,比如删除列表中所有大于10的数字。

let list = [5, 12, 8, 15, 3];
// 删除所有大于10的项
let newList = list.filter(item => item <= 10);
console.log(newList); // 输出 [5, 8, 3]

两种方法的对比

下面通过表格对比splice和filter两种方法的差异,帮助开发者选择合适的方案:

对比维度splice方法filter方法
是否修改原数组
适用场景已知索引、需要修改原数组、删除单个项需要保留原数组、删除多个匹配项、复杂筛选条件
返回值被删除的元素组成的数组筛选后的新数组

删除对象类型的列表项

如果列表中的元素是对象,删除特定项时需要根据对象的某个属性来判断,同样可以使用上述两种方法。

// 对象类型列表
let userList = [
    { id: 1, name: '张三' },
    { id: 2, name: '李四' },
    { id: 3, name: '王五' }
];
// 要删除的用户id
let targetId = 2;
// 方法1:使用filter删除
let newUserList = userList.filter(user => user.id !== targetId);
console.log(newUserList); // 输出 [{id:1,name:'张三'},{id:3,name:'王五'}]

// 方法2:使用findIndex结合splice删除
let targetIndex = userList.findIndex(user => user.id === targetId);
if (targetIndex !== -1) {
    userList.splice(targetIndex, 1);
}
console.log(userList); // 输出 [{id:1,name:'张三'},{id:3,name:'王五'}]

这里使用findIndex方法查找符合属性条件的元素索引,再配合splice删除,比indexOf更适合对象类型元素的查找。

注意事项

  • 使用splice删除前一定要先判断索引是否存在,避免索引不存在时删除错误的元素或者报错。
  • 如果不需要修改原数组,优先选择filter方法,避免副作用导致的数据问题。
  • 删除重复项时,splice需要循环查找索引并删除,而filter可以一次性处理所有匹配项,效率更高。
  • 处理对象列表时,不要直接比较对象本身,应该根据对象的唯一标识属性(如id)来判断是否为目标项。

JavaScript数组操作列表删除splice方法filter方法修改时间:2026-06-19 16:00:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。