03.【JS數(shù)組】內(nèi)置方法:concat、push、shift、pop、unshift

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. 不同于pushconcat多個數(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]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容