1. array.concat
語法: var newArray = oldArray.concat(value1[, value2[, ...[, valueN]]])
作用:將別的一個或多個數(shù)組與原數(shù)組相連接
- 返回值: 新數(shù)組。(不改變原數(shù)組內(nèi)容)
- 是否改變原數(shù)組: 否
- 是否淺拷貝: 是
var arr1 = [0,1,2];
var arr2 = ["a","b","c"];
var arr3 = arr1.concat(arr2);
console.log(arr3); //[0,1,2,"a","b","c"],原數(shù)組arr1不受影響
注意:
a. 不同于push,concat多個數(shù)組時,只返回一維數(shù)組
//比較: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操作返回值是新數(shù)組length
console.log(arr1); //[0,1,2,3,[4,5]] arr1發(fā)生改變
b. shandow copy :淺拷貝
淺拷貝,只是對指針的拷貝,拷貝后兩個指針指向同一個內(nèi)存空間,深拷貝不但對指針進行拷貝,而且對指針指向的內(nèi)容進行拷貝,經(jīng)深拷貝后的指針是指向兩個不同地址的指針。
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)
作用:在原數(shù)組末尾添加元素或數(shù)組
- 返回值: 新數(shù)組length值
- 是否改變原數(shù)組:是
- 是否淺拷貝: 是
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會發(fā)生改變
arr2.push(5); //arr2:[3,4,5]
console.log(arr1); //arr1:[0,1,2,[3,4,5]]
3.array.pop
語法: arr.pop()
作用: 刪除數(shù)組最末尾的元素
- 返回值: 刪除的元素
- 是否改變原數(shù)組: 是
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]]])
作用: 在數(shù)組最開始位置添加元素(跟push()剛好相反)
- 返回值 :新數(shù)組長度
- 是否改變原數(shù)組: 是
- 是否淺拷貝: 是
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會發(fā)生改變
arr2.unshift(5); //arr2:[5,3,4]
console.log(arr1); //arr1:[[5,3,4],0,1,2]
5.array.shift
語法:arr.shift()
作用:刪除數(shù)組第一個元素(同pop()剛好相反)
- 返回值: 刪除的元素
- 是否改變原數(shù)組: 是
var arr1 = [0,1,2];
var poped = arr1.shift();
console.log(poped); //0
console.log(arr1); //[1,2]