数组的删除splice
-
splice
是删除数组中的某些内容,按照数组的索引来删除 -
splice
改变原数组,其返回值构成的新数组是原数组不要的值 -
语法:
splice(从哪一个索引位置开始,删除个数,添加的元素(可以多个))
(第三个参数可以不写,也可以替换一个或者多个内容,多个内容使用逗号间隔) -
第一个参数可以写负数,代表从倒数第几个开始删除
-
若删除0个然后添加,则是在参数1,前面添加,不然是在参数1后面添加
// 定义数组
var arr = [1, 2, 3, 4, 5, 6]
//返回的元素构成新数组,无引用关系
var a=arr.splice(10)//起始值大于长度不删除
console.log(arr,a);//(6)[1, 2, 3, 4,5,6] []
var a=arr.splice(1,'a')//删除几个元素是NaN,相当于删除0个
console.log(arr,a);//(6)[1, 2, 3, 4,5,6] []
var arr1=arr.splice(-10)//开始值是负数时,并且大于等于数组长度,相当于从0开始
console.log(arr1, arr);//[] (6)[1,2,3,4,5,6] []
var a=arr.splice("a")//NAN
console.log(arr,a);// [] [1,2,3,4,5,6]
var arr1 = arr.splice(2, 2, 0, -1)//删除并替换
console.log(arr1, arr);// (2)[3,4] (6) [1,2,0,-1,5,6]
var arr1=arr.splice()//因为原数组没有不要的值,返回值是一个空数组
console.log(arr1, arr);// [] (6) [1,2,3,4,5,6]
var arr1=arr.splice(0)//原数组中所有的元素删除,放在新数组中,清空原数组
console.log(arr1, arr);// (6) [1,2,3,4,5,6] []
var arr1=arr.splice(1)//从下标为1,清除到数组尾部
console.log(arr1, arr);// (5) [2,3,4,5,6] [1]
var arr1=arr.splice(-2)//从倒数第2项,清除到数组尾部
console.log(arr1, arr);//(2)[5,6] (4)[1,2,3,4]
var arr1=arr.splice(-2,1)//从倒数第2项,清除1个
console.log(arr1, arr);//[5] (4)[1,2,3,4,6]
var arr1=arr.splice(1,2)//从下标为1,删除两个元素
console.log(arr1, arr);//(2)[2,3] (4)[1,4,5,6]
var arr1=arr.splice(1,0,9)//在下标为1前,插入一个数字9
console.log(arr1, arr);// [] (7)[1,9,2,3,4,5,6]
var arr1=arr.splice(-1,0,9)//在倒数第一前,插入一个数字9
console.log(arr1, arr);// [] (7)[1,2,3,4,5,9,6]
var arr1=arr.splice(0,0,9)//在下标为0前,插入一个数字9
console.log(arr1, arr);// [] (7)[9,1,2,3,4,5,6]
var arr1=arr.splice(1,-2)//删除个数为负数时不删除
console.log(arr1, arr);//[] (6)[1,2,3,4,5,6]
var arr1=arr.splice(0,7)//删除个数大于数组长度,删除到最后
console.log(arr1, arr);//[] (6)[1,2,3,4,5,6] []
//splice重构
function array_splice(arr, start, deleteCount) {
var arr1 = []
if (arr == undefined || arr.constructor !== Array)
throw new Error("参数错误")
if (start === undefined) return []
start = Number(start)
if (isNaN(start)) start = 0
if (start < 0) start = (start + arr.length) > 0 ? (start + arr.length) : 0;
if (start > arr.length) start = arr.length;
if (deleteCount === undefined) deleteCount = arr.length - start;
deleteCount = Number(deleteCount);
if (isNaN(deleteCount)) deleteCount = 0;
if (deleteCount < 0) return arr1;
if (deleteCount + start > arr.length) deleteCount = arr.length - start;
for (var i = start; i < arr.length; i++) {
if (i < deleteCount + start) {arr1[arr1.length] = arr[i]; }
arr[i] = arr[i + deleteCount]
}
arr.length -= deleteCount;
//新增
var len = arguments.length - 3;
var l = arr.length += len;//L是新增后数组的长度 假如新增3个那就是9
while (l > start) {
if (l > start + len) arr[l - 1] = arr[l - len - 1];
else {
arr[l - 1] = arguments[3 + (l - 1 - start)];
}
l--;
}
return arr1
}
var arr = [1, 2, 3, 4, 5, 6]
var arr1 = array_splice(arr, 3,2, -1, -2, -3)
console.log(arr, arr1);