本文详解在 JavaScript 中删除数组指定元素的三种常用方法。首先介绍通过自定义 indexOf 结合 splice 实现精准移除;其次解析 splice 方法的三个参数(索引、长度、替换值)如何灵活完成删除、替换与添加操作;最后对比 delete 操作符仅将元素置为 undefined 且不改变数组长度的特性,帮助开发者根据实际需求选择合适方案。
本文整理了在 JavaScript 中删除数组指定元素的常见场景及对应的函数实现,并分析了不同方法的行为差异,以下是完整内容。
通过 indexOf 与 splice 组合删除元素
删除数组中指定的某个元素
js删除数组中某一项或几项的几种方法 https://www.jb51.net/article/154737.htm
首先,可以为 JS 的 Array 对象定义一个自定义函数,用于查找指定元素在数组中的索引位置,代码实现如下:
Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i;
}
return -1;
}; 接着,利用获取到的元素索引,调用 JS 数组内置的删除函数来移除该元素:
具体代码结构如下:
Array.prototype.remove = function(val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
}; 基于上述逻辑构造出的函数,例如我们有一个数组:
var emp = ['abs','dsf','sdf','fd'] 若需删除其中的 'fd' 元素,可执行以下调用:
emp.remove('fd'); splice 方法的参数详解与应用
删除数组中的某一项
splice(index,len,[item]):注意,该方法会直接修改原始数组。
splice 方法包含三个参数,可用于实现数组内单个或多个值的替换、删除或添加操作。
参数说明:index 表示数组起始下标,len 表示替换或删除的长度,item 表示替换的值;若执行删除操作,item 参数留空。
示例数组定义:arr = ['a','b','c','d']
执行删除操作
//删除起始下标为1,长度为1的一个值(len设置1,如果为0,则数组不变)
var arr = ['a','b','c','d'];
arr.splice(1,1);
console.log(arr);
//['a','c','d'];
//删除起始下标为1,长度为2的一个值(len设置2)
var arr2 = ['a','b','c','d']
arr2.splice(1,2);
console.log(arr2);
//['a','d'] 执行替换操作
//替换起始下标为1,长度为1的一个值为‘ttt',len设置的1
var arr = ['a','b','c','d'];
arr.splice(1,1,'ttt');
console.log(arr);
//['a','ttt','c','d']
var arr2 = ['a','b','c','d'];
arr2.splice(1,2,'ttt');
console.log(arr2);
//['a','ttt','d'] 替换起始下标为1,长度为2的两个值为‘ttt',len设置的1 执行添加操作:将 len 设置为 0,并指定 item 为要添加的值。
var arr = ['a','b','c','d'];
arr.splice(1,0,'ttt');
console.log(arr);
//['a','ttt','b','c','d'] 表示在下标为1处添加一项'ttt' delete 操作符对数组的影响
使用 delete 方法删除数组元素后,该下标处的值会被置为 undefined,但数组的总长度保持不变。
var arr = ['a','b','c','d'];
delete arr[1];
arr;
//["a", undefined × 1, "c", "d"] 中间出现两个逗号,数组长度不变,有一项为undefined 以上关于 JS 删除数组元素的方法分享完毕,希望能提供参考,感谢支持。