javascript數組詳解(js數組深度解析)

來源:互聯網
上載者:User

標籤:sum   case   添加元素   取數   順序   .so   實值型別   替換   join   

Array 對象是一個複合類型,用於在單個的變數中儲存多個值,每個實值型別可以不同。

建立數組對象的方法:

new Array();new Array(size);new Array(element0, element1, ..., elementn);
1.  當索引值為負數時,會將其看作是對象的一個屬性,若為非負的數字字串,則會隱式轉換為數字索引:
      var a= new Array();      a[-1.23]=true;      a[1]="pomelo";      a["100"]="tt";      console.log(a);   ///  [1: "pomelo", 100: "tt", -1.23: true]      console.log(a.length)   /// 101  稀疏數組的長度為最大下標+1

其實數組對象的索引其實就是對象屬性名稱的一種特殊形式,當試圖查詢任何對象屬性名稱時,不會報錯,而會顯示undefined:

console.log(a["hello"]);   //undefined

2.  length屬性可以用於置空數組或從前向後截取數組:

    var array1=[1,2,3,4,5];    array1.length=3;   ///[1,2,3]    array1.length=0;   ///[]    array1.length=5;   ///[] 長度為5的空數組    console.log(array1)

可以使用Object.defineProperty(對象,屬性名稱,{設定})方法設定可讀可寫:

    Object.defineProperty(array1,"length",{writable:false});    array1.length=10;    console.log(array1.length);    ///5

3.數組元素的添加和刪除:

末尾:添加元素push(),刪除元素pop();

首部:添加元素unshift(),刪除元素shift();

    var array2=[1,2,3,4,5];    array2.unshift(6);   ///[6,1,2,3,4,5]    array2.shift();   //[1,2,3,4,5]    console.log(array2);

4.數組的便利最佳化與篩選

當數組容量很大時,length不應在每次迴圈中都查詢;

當需要過濾數組中的無效資料時,用continue跳出本次迴圈;

var array3=[null,1,0,undefined];
for(var i= 0,len=array3.length;i<len;i++){
if(!array3[i]) continue;
console.log(array3[i]); //1
}

或者利用ES5內建的foreach()方法:

    var array4=[1,2,3,4];    var sum=0;    array4.forEach(function(i){        sum+=i;    });    console.log(sum);   ///10

5.js不支援多維陣列,但可以通過數組的數組來實現:

    var array5=new Array(10);    for(var i=0;i<array5.length;i++){        array5[i]=new Array(10);    }    for(var i=0;i<array5.length;i++){        for(var j=0;j<array5[i].length;j++){            array5[i][j]=i*j;        }    }    console.log(array5[5][6]);   //30

6.數組方法

6.1   join()  將數組轉化為字串並串連在一起

    var array6=[1,2,3];    console.log(array6.join("-"));  // 1*2*3    console.log(array6.join(""));  // 123    console.log(array6.join());  // 1,2,3    console.log(typeof array6.join());  // String

6.2   reverse() 在原數組本身基礎上將元素順序顛倒

var array7=[1,2,3];
console.log(array7.reverse()) //[3,2,1]

6.3  sort() 數組排序

      var array8=["apple","cherry","cherry"];      console.log(array8.sort());    //["apple", "cherry", "cherry"]      array8.push(undefined);      console.log(array8.sort());   //undefined會被放到最後 ["apple", "cherry", "cherry", undefined]

若想改變定序,需要傳入一個比較函數:

    var array9=[33,4,11,222];                                                     console.log(array9.sort());   //11,222,33,4   預設以第一個數字比較                      console.log(array9.sort(function(a,b){             //從小到大排列                       return a-b;                                                               }))                                                                                                                                               

字元排序預設區分大小小,以首字母ASCII編碼為根據,從小到達排序:

    var array10=["ant","Boy","cat","Dog"];                                       console.log(array10.sort());      //["Boy", "Dog", "ant", "cat"]             console.log(                                                                         array10.sort(function(s,t){                                                  var a= s.toLowerCase();                                                          var b= t.toLowerCase();                                                      if(a<b) return -1;                                                           if(a>b) return 1;                                                            return 0;                                                                })                                                                   );         //   ["ant", "Boy", "cat", "Dog"]                             

6.4 concat() 數組串連

     var array11=[1,2,3];                                                                    console.log(array11.concat(4,5));     //[1,2,3,4,5]                                      console.log(array11.concat([4,5]));    //[1,2,3,4,5]                                     console.log(array11.concat("4",[5,[6,[7,8]]]))       //[1, 2, 3, "4", 5, Array[2]]   

6.5  slice(第一個位置,第二個位置)  

返回從第一個位置(包括)到第二個位置的子數組;

如果只制定一個參數,則返回從指定位置到數組結尾的所有元素組成的子數組;

若參數出現負數,則標識從後往前數的位置下標;

    var array12=[1,2,3,4,5];                              console.log(array12.slice(0,3));   //[1,2,3]          console.log(array12.slice(3));    //[4,5]             console.log(array12.slice(-1));   //[5]               console.log(array12.slice(1,-1));   //[2,3,4]     

6.6  splice(插入或刪除的起始位置,刪除元素的個數) 在數組中插入、刪除或替換元素的通用方法:

    var array13=[1,2,3,4,5,6,7,8];                                   //刪除                                                             console.log(array13.splice(4));     //[5,6,7,8]                  console.log(array13);         //[1,2,3,4]                        console.log(array13.splice(1,2));  //[2,3]                       console.log(array13); //   [1,4]                                 //插入                                                             array13.splice(1,0,"pomelo");                                    console.log(array13);      //[1, "pomelo", 4]                    //替換                                                             var array14=[1,2,3,4,5];                                         array14.splice(2,1,"pomelo");   //[1, 2, "pomelo", 4, 5]         console.log(array14)                                         

6.7  map() 將調用此函數的數組的每個元素傳遞給指定函數:

    var array15=[1,2,3];                              var array16=array15.map(function(i){                  return i*i;                                   });                                               console.log(array16)    //[1,4,9]             

-------------持續更新中-----------

javascript數組詳解(js數組深度解析)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.