04.【JS数组】内置方法:slice()与splice()

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]

你可能感兴趣的:(04.【JS数组】内置方法:slice()与splice())