对JS删除数组中的某个元素进行的一个小封装
扩展一个数组删除函数,删除时会改变数组自身的长度,这个方法将直接更改原数组
当传入下标时会直接删除这个下标的元素。当传入对象时,会删除这个对象。
/**
* 扩展一个数组删除函数,删除时会改变数组自身的长度,这个方法将直接更改原数组
* 当传入下标时会直接删除这个下标的元素。当传入对象时,会删除这个对象。
* @param obj 下标或者一个对象。
* @returns {Array} 返回数组本身,以方便链式操作。
*/
Array.prototype.remove = function (obj) {
let index = -1;
if(Object.prototype.toString.call(obj) === '[object Number]'){
index = obj;
}else{
for (let i = 0; i < this.length; i++) {
if(this[i] === obj){
index = i;
break;
}
}
}
if(index>-1) this.splice(index, 1);
return this;
};
//测试数组一
let arr = [
{name: '张三'},
"a",
1,
]
console.log(JSON.stringify(arr)); //[{"name":"张三"},"a",1] 打印原数组
arr.remove(arr[0])
console.log(JSON.stringify(arr)); //["a",1] 删除了第一个元素后打印
arr.remove(arr[0])
console.log(JSON.stringify(arr)); //[1] 再次删除第一个元素打印
arr.remove(arr[0])
console.log(JSON.stringify(arr.length)); //0 再次删除第一个元素后,数组为空
//测试数组二
let arr2 = [
{name: '李四'},
"b",
2,
false,
[1]
]
console.log(JSON.stringify(arr2.remove(0).reverse())) //[[1],false,2,"b"] 链式操作,删除下标为 0 的元素后,反转数组
let temp = arr2[1];
console.log(JSON.stringify(arr2.remove(temp).remove(2))) //[[1],2] 链式操作,删除 temp 元素对象后,删除数组中下标为 2 的元素
网友评论