6.array.slice
语法:arr.slice([begin[,end]])
作用:从已有的数组中返回选定的元素。主要用于复制,可传入1或2个参数。
- 返回值: 新数组
- 是否改变原数组: 否
- 是否为浅拷贝: 是
- 参数传递个数:
- 0 —— 浅拷贝得到一个新数组(用于复制)
- 1 —— 复制从该位置到数组末尾的数组项
- 2 —— 复制从第一个参数到第二个参数为止的数组项,不包括最后一项
var arr1 = [0,1,2,3];
var arr2 = arr1.slice(); //不传参,arr2为arr1的浅拷贝 arr2:[0,1,2,3]
var arr3 = arr1.slice(1); //只传1个参数 arr3:[1,2,3]
var arr4 = arr1.slice(1,3); //传2个参数,复制arr1[1]到arr1[3]之间的的数组项,但不包括arr1[3]。arr3:[1,2]
7.array.splice
语法:arr.splice(start, deleteCount[, item1[, item2[, ...]]])
作用: 插入、删除或替换数组的元素。该方法可删除从start处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换哪些被删除的元素
- 返回值: 被删除的元素组成的数组
- 是否改变原数组:是
- 是否为浅拷贝: 是
var arr1 = [0,1,2,3];
//只删除
var delElement1 = arr1.splice(1,2); //删除arr1中从arr1[1]开始的两个元素
console.log(delElement1); //[1,2];delElement1.length = 2
console.log(arr1); //[0,3]
//只增加
var delElement2 = arr1.splice(1,0,4,5); //从arr1[1]开始删除0个元素,并在此位置新增4,5两个元素
console.log(delElement2); //[];delElement2.length = 0
console.log(arr1); //[0,4,5,3]
//只替换
var delElement3 = arr1.splice(1,2,1,2); //从arr1[1]开始删除2个元素,并在此位置新增1,2两个元素(删除2个再新增2个,即替换)
console.log(delElement3); //[4,5];delElement3.length = 2
console.log(arr1); //[0,1,2,3]
//浅拷贝
var arrTemp = ["a","b"]
var delEle = arr1.splice(1,0,arrTemp); //[];delEle.length = 0
console.log(arr1); //[0, ["a","b"], 1, 2, 3]
arrTemp.push("c"); //arrTemp: ["a","b","c"]
console.log(arr1); //[0, ["a","b","c"], 1, 2, 3]
网友评论