03.【JS数组】内置方法:concat、push、shift、pop、unshift

1. array.concat

语法: var newArray = oldArray.concat(value1[, value2[, ...[, valueN]]])

作用:将别的一个或多个数组与原数组相连接

  • 返回值: 新数组。(不改变原数组内容)
  • 是否改变原数组: 否
  • 是否浅拷贝: 是
var arr1 = [0,1,2];
var arr2 = ["a","b","c"];

var arr3 = arr1.concat(arr2);   
console.log(arr3);    //[0,1,2,"a","b","c"],原数组arr1不受影响

注意:

a. 不同于pushconcat多个数组时,只返回一维数组

//比较:push()与concat()
var arr1 = [0,1,2];

var arr4 = arr1.concat(3,[4,5]);
console.log(arr4);      // [0,1,2,3,4,5]

var arr5 = arr1.concat(3,[4,5]);
console.log(arr5);      // 5 push操作返回值是新数组length
console.log(arr1);      //[0,1,2,3,[4,5]]   arr1发生改变

b. shandow copy :浅拷贝

浅拷贝,只是对指针的拷贝,拷贝后两个指针指向同一个内存空间,深拷贝不但对指针进行拷贝,而且对指针指向的内容进行拷贝,经深拷贝后的指针是指向两个不同地址的指针。

var arr1 = [0,1,2];
var arr2 = [6,[7,8]];

var arr3 = arr1.concat(3,[4,5],arr2);
console.log(arr3);  // [0, 1, 2, 3, 4, 5, 6, [7,8]]

//改变arr2[1]的值后,arr3会随之改变
arr2[1].push(9);    // arr2:[6,[7,8,9]]
console.log(arr3);  // arr3:[0, 1, 2, 3, 4, 5, 6, [7,8,9]]

//同理:改变arr3[arr3.length-1]的值后,arr2也会随之改变
arr3[arr3.length-1][0] = 10;  // arr3:[0, 1, 2, 3, 4, 5, 6, [10,8,9]]
console.log(arr2);      //arr2: [6,[10,8,9]]

2.array.push

语法: arr.push(element1, ..., elementN)

作用:在原数组末尾添加元素或数组

  • 返回值: 新数组length值
  • 是否改变原数组:是
  • 是否浅拷贝: 是
var arr1 = [0,1,2];
var arr2 = [3,4];

var newLen_1 = arr1.push(arr2);    //4
console.log(arr1);  //[0,1,2,[3,4]] 

//改变arr2,arr1会发生改变
arr2.push(5);   //arr2:[3,4,5]
console.log(arr1);  //arr1:[0,1,2,[3,4,5]]

3.array.pop

语法: arr.pop()

作用: 删除数组最末尾的元素

  • 返回值: 删除的元素
  • 是否改变原数组: 是
var arr1 = [0,1,2];
var poped = arr1.pop();   
console.log(poped);  //2
console.log(arr1);  //[0,1]

4.array.unshift

语法:arr.unshift([element1[, ...[, elementN]]])

作用: 在数组最开始位置添加元素(跟push()刚好相反)

  • 返回值 :新数组长度
  • 是否改变原数组: 是
  • 是否浅拷贝: 是
var arr1 = [0,1,2];
var arr2 = [3,4];

var newLen_1 = arr1.unshift(arr2);    //4
console.log(arr1);  //[[3,4],0,1,2] 

//改变arr2,arr1会发生改变
arr2.unshift(5);   //arr2:[5,3,4]
console.log(arr1);  //arr1:[[5,3,4],0,1,2]

5.array.shift

语法:arr.shift()

作用:删除数组第一个元素(同pop()刚好相反)

  • 返回值: 删除的元素
  • 是否改变原数组: 是
var arr1 = [0,1,2];
var poped = arr1.shift();   
console.log(poped);  //0
console.log(arr1);  //[1,2]

你可能感兴趣的:(03.【JS数组】内置方法:concat、push、shift、pop、unshift)