1. 程式人生 > 其它 >Array詳解(陣列詳解)

Array詳解(陣列詳解)

一,陣列的概念

  陣列一般是由相同型別的元素組成的集合,是物件;

  陣列是值的有序集合,陣列中的每個值稱為一個元素,每個元素在陣列中都有一個數字位置,稱為索引,索引從 0 開始,依次遞增。

定義

方式1,new 陣列名 (引數,引數,...)

  只有一個數字引數時是陣列的長度(new可以省略,但一般儘量寫上)

1 //定義一個空陣列
2 var 陣列名 = new Array();
3 //建立一個包含 10 個元素的陣列,沒有賦值
4 var 陣列名 = new Array(10);    
5 //建立一個數組有兩個元素
6 var 陣列名 = new Array("孫悟空",100);
方式2,var 陣列名 = [1, 2, 3, 4, 5] 字面量定義方式
1 var onelist = ['one',1,null,];  //定義一個數組 onelist

二,陣列的屬性

   下標:表示陣列的第 幾個元素,從左往右數,從 0 開始也叫索引;

1 arr[ 0 ] : 表示陣列的第 1 個元素 , 他是下標,從 0 開始也叫索引;
2 
3 注意:下標可以是變數或表示式
4 
5 let arr1 = [a,b,c,d];
6 let number = arr1[0];
7 console.log(number);
8 //列印陣列中的第一個元素  a  

  長度:length屬性,代表陣列的長度,等於陣列的元素個數。不僅是可讀的,也可以設定;

1
var arr = [] //定義一個空陣列 2 arr.length = 4; //可以將其長度改為4 3 console.log(arr); //
輸出 四個 空預設為實體型別 empty 列印的值仍是undefined

三,陣列的方法

  • 棧方法(新增,刪除)

    • push():在陣列最後新增一個元素,返回新增後陣列的長度;

    • 1 let arr = [1,2,3];
      2 let newArr = arr.push(4);
      3 
      4 console.log(arr);
      5 //列印:[1,2,3,4]
      6 console.log(newArr );
      7 //
      列印:4 注意返回值為改變後陣列長度
    • pop():刪除陣列最後一個,返回被刪除的元素;

    • 1 let arr = [1,2,3];
      2 let newArr = arr.pop();
      3 
      4 console.log(arr);
      5 //列印:[1,2]
      6 console.log(newArr );
      7 //列印:3 注意返回值為刪除的陣列元素
  • 佇列方法(新增,刪除)

    • unshift():在陣列最前面新增,返回新增後陣列的長度;

    • 1 let arr = [1,2,3];
      2 let newArr = arr.unshift(4);
      3  
      4 console.log(arr);
      5 //列印:[4,1,2,3]
      6 console.log(newArr );
      7 //列印:4 注意返回值為改變後陣列長度
    • shift():刪除陣列第一個,返回被刪除的元素;

    • 1 let arr = [1,2,3];
      2 let newArr = arr.shift();
      3  
      4 console.log(arr);
      5 //列印:[2,3]
      6 console.log(newArr );
      7 //列印:1 注意返回值為改變後陣列長度
  • 排序方法

    • sort():預設按 ASCII 碼正序排列,兩位或以上的數字會自動轉換為string型別,只取第一位數。如 12 取 1 的 ASCII 碼比較;

    • 一般使用函式進行排序:

    • 1 arr.sort(function(a,b){
      2     return a-b;        //返回為 正 為正序
      3 })
      4 arr.sort(function(a,b){
      5     return b-a;        //返回為 負 為倒序
      6 }
    • reserver():反轉陣列順序,改變原有陣列;沒有引數;返回值為改變後的陣列;

    • 1 var arr = [1,2,3]
      2 var arrResver = arr.reverser() 
      3 console.log(arrResver );
      4 //輸出:[3,2,1]
      5 
      6 //它的返回值和原陣列指向的同一個地址
      7 arr == arrResver   //true
      8 arr === arrResver  //true
  • 陣列查詢

    • indexOf():根據對應的值找下標,找的是值第一次出現的位置,返回它的下標;預設從下標 0 開始找,沒有找到則返回 - 1;

    • 1 let arr = [1,2,3];
      2 let number = arr.indexOf(3);
      3 let int = arr.indexOf(4);
      4  
      5 console.log(number);
      6 //列印: 2  注意返回值為查詢值的下標
      7 
      8 console.log(int);
      9 //列印: -1  注意沒有找到則返回 -1
    • lastindexOf():跟indexOf() 一樣,只不過從後往前開始找;

  • 陣列擷取

    • slice():不修改原陣列, 將原陣列中的指定區域資料提取出來,返回的是一個新的陣列;

    • 兩個引數:start:開始下標,end:結束下標;  包括開始下標的值,不包括結束下標的值;
    • 1 let arr = [1,2,3];
      2 let newArr = arr.slice(1,2);
      3 
      4 console.log(newArr);
      5 //列印  [2]  擷取原陣列,返回一個新陣列,不包括結束位置;
  • 數組合並,連線

    • concat():把兩個或多個數組合併成一個數組,可以連線值;追加資料,把連線的陣列或值放在後面, 建立一個新陣列, 不改變原陣列;
    • 1 var arr1 = [1,2,3]
      2 var arr2 = [4,5,6]
      3 var newarr = arr1.concat(arr2)
      4 console.log(newarr)  //輸出 [1,2,3,4,5,6]
    • join():把陣列連線成為字串 有分割符,不會影響原來的陣列,返回值為string;
    • 1 var arr1 = [1,2,3]
      2 var newarr = arr1.join()  //無分割符,預設原,號分割
      3 var newarr1 = arr1.join("/")  //以 / 為分割符
      4 console.log(newarr)  //輸出 1,2,3
      5 console.log(newarr1)  //輸出 1/2/3
  • 陣列增,刪,改

    • splice():擷取原陣列中指定的資料, 會改變原陣列;

    • 刪除:(開始下標 刪除的個數)(個數可以被省略,就是刪到最後)。
    •  1 var arr = [1,2,3]
       2 var newarr = arr.splice(0,1)    
       3 //返回 被刪除元素組成的陣列
       4 
       5 console.log(newarr)        //輸出 [1]
       6 console.log(arr)        //輸出 [2,3]
       7 var arr1 = [1,2,3]
       8 var newarr1 = arr.splice(0)
       9 console.log(newarr1)    //輸出 [1,2,3]
      10 console.log(arr1)        //輸出 []
    • 插入:(開始下標,刪除的個數,"新元素")插入元素到指定位置,將刪除個數改為 0 ,不刪除元素,直接插入新元素。

    •  1 var arr = [1,2,3]
       2 var newarr = arr.splice(0,0,4)    
       3 //返回 被刪除元素組成的陣列
       4 
       5 console.log(newarr)        //輸出 []
       6 console.log(arr)        //輸出 [4,1,2,3]
       7 var arr1 = [1,2,3]
       8 var newarr1 = arr1.splice(1,0,4)
       9 console.log(newarr1)    //輸出 [] 空陣列
      10 console.log(arr1)        //輸出 [1,4,2,3]
    • 替換:將刪除位置的資料替換,刪除資料位置要輸入新的值

    • 1 let arr = [1,2,3]
      2 let newarr = arr.splice(0,1,4)    //返回 被刪除元素組成的陣列
      3 console.log(newarr)        //輸出 [1]
      4 console.log(arr)        //輸出 [4,2,3] 已刪除並替換掉
  • 遍歷陣列的方法

    • for of:遍歷資料的每一個元素;

    • 1 let arr = [1,3,2,4]
      2 for(let v of arr){
      3     console.log(v);
      4     //輸出 :1,3,2,4;
      5 }                               
    • ES5新增:高階函式中常用的兩個:forEach,map。

    • forEach:遍歷陣列中的每一項;沒有返回值的,對原來陣列也沒有影響;
    • 1 let arr = [1,2,3,4,5]
      2 //value代表值,index代表下標,arr代表陣列;都是形參可以改為任意字母;
      3 arr.forEach(function(value,index,arr){
      4     console.log("值:" + value + ", 下標:" + index + ", 陣列:" + array);
      5 })
    • map:遍歷陣列中的每一項,map的回撥函式中支援return返回;
    • 1 var arr = [1,2,3,4,5]
      2 arr.map(function(value,index,arr){
      3     console.log("值:" + value + ", 下標:" + index + ", 陣列:" + array);
      4 })