JS--Array類型

ECMAScript的每一項可以保存任何類型的數(shù)據(jù),且數(shù)組的大小是可以動態(tài)調(diào)整的。


  • 創(chuàng)建數(shù)組的基本方式
  • 使用Array構(gòu)造函數(shù)
    var colors=new Array("red","blue","black");
    alert(colors);//red,blue,black
    var colors=new Array(3);
    alert(colors.length);//3
    可以通過為array構(gòu)造函數(shù)添加任意數(shù)量的數(shù)組元素,當(dāng)構(gòu)造函數(shù)的參數(shù)只為一個時,那么是為了表明該數(shù)組的元素個數(shù)。
  • 使用數(shù)組字面量表示法
    var colors=['red','blue','black'];
  • Array的屬性
    length該屬性代表該數(shù)組一共包含多少個數(shù)組元素,然而該屬性卻不是只讀的,我們可以通過設(shè)置他的值來調(diào)整數(shù)組的大小。當(dāng)設(shè)置數(shù)組的長度小于當(dāng)前長度時,則會默認(rèn)裁剪掉后面多余的元素。當(dāng)設(shè)置的長度大于當(dāng)前元素的數(shù)量時,那么多出來的元素則會自動被默認(rèn)類型為undefined。
  • 檢測數(shù)組對象
    這個之前就有寫過,利用關(guān)鍵字instanceof來檢測某個對象實例是否是數(shù)組的實例。
    var colors=['red','blue','black'];
    alert(colors instanceof Array);//true
  • 轉(zhuǎn)換方法
    已知所有對象都具有toLocaleString() toString() valueOf()方法,調(diào)用數(shù)組的toString()方法,會返回由數(shù)組中的每個值的字符串形式拼接而成的一個已逗號分隔字的字符串。但是valueOf()方法還返回的是數(shù)組。
    當(dāng)我們直接用alert去輸出一個數(shù)組時,會被默認(rèn)的已toString的方法轉(zhuǎn)化數(shù)組。
  • join 可以使用不同的分隔符來構(gòu)建這個字符串,然后返回包含所有項的字符串。
    var colors=['red','blue','black'];
    alert(colors.join('|'));//red||blue||black
  • 棧方法:LIFO(后進(jìn)先出)
    • push()
      可以接受任意數(shù)量的參數(shù),并把他們逐個添加到數(shù)組末尾,并返回修改后數(shù)組的長度。
      var colors=['red','blue','black'];
      colors.push('yellow','pink');
      alert(colors.push());//5
      alert(colors.join('|'));//red||blue||black||yellow||pink
    • pop()
      從數(shù)組的末尾移除最后一項,減少數(shù)組的length,然后返回移除的項。
      var colors=['red','blue','black'];
      colors.push('yellow','pink');
      colors.pop();
      alert(colors.pop());//yellow
      alert(colors.join('|'));//red||blue||black||yellow
  • 隊列方法:FIFO(先進(jìn)先出)
    區(qū)別于棧方法,隊列方法是從隊列的前端移除項。方法shift()是能夠移除數(shù)組中的第一個項。
  • shift()返回移除項
    var colors=['red','blue','black'];
    colors.shift();
    alert(colors);//blue,black
  • unshift()這個方法是從數(shù)組的前端添加項 ,返回數(shù)組長度值。
    var colors=['red','blue','black'];
    colors.unshift('white');//white,red,blue,black
  • 重排序
  • reverse()方法會反轉(zhuǎn)數(shù)組項的順序
    var letter=['a','b','c','d','e'];
    letter.reverse();
    alert(letter);//e,d,v,b,a
  • sort()方法按升序排列數(shù)組項,即最想的值位于最前面,最大的值排在最后面,sort()方法比較的是字符串。但是對于數(shù)組項為數(shù)值,那么排序也會先將數(shù)組轉(zhuǎn)化為字符串,然后再排序,但是這樣排序的結(jié)果會不符合邏輯。
    var letter=['d','b','e','a','c'];
    letter.sort();
    alert(letter);//a,b,c,d,e
    【問題】
    var letter=[0,1,5,10,15];
    letter.sort();
    alert(letter);//0,1,10,15,5
    【解決方案】
    sort方法會接受一個比較函數(shù)作為參數(shù),這個比較函數(shù)接收兩個參數(shù),并且指定哪個值位于哪個值的前面。
    var letter=[0,1,5,10,15];
    letter.sort(compare);
    alert(letter);//0,1,5,10,15
    function compare(value1,value2){
    if(value1<value2)
    return -1;
    else if(value1>value2)
    return 1;
    else
    return 0;
    }
  • 操作方法
  • concat()實現(xiàn)數(shù)組的拼接
    var arr1=['big','small'];
    var arr2=['middle'];
    var arr3=arr1.concat(arr2,'lala');
    alert(arr3);//big,small,middle,lala
  • slice()實現(xiàn)數(shù)組截取,接受一個或兩個參數(shù),表示截取位置。第一個參數(shù)表示開始截取的位置,第二個參數(shù)表示結(jié)束位置,但不包括結(jié)束位置的項。
    alert(arr3.slice(1,2));//small
  • splice向數(shù)組的中部插入項
    • 刪除:只需要指定兩個參數(shù),要刪除的第一項的位置與要刪除的位數(shù)。
      var arr1=['big','small','susu'];
      alert(arr1.splice(0,2));//big,small
      alert(arr1);//susu
      返回刪除項。
    • 插入:可以向指定位置插入多項,接受三個參數(shù),第一個為起始位置,第二個為0要刪除的項數(shù),第三個為要插入的項。當(dāng)然插入的項可以為多個。
      var arr1=['big','small','susu'];
      alert(arr1.splice(1,0,'middle','lalal'));//
      alert(arr1);//big,middle,lala,small,susu
    • 替換 :可以向指定位置插入任意數(shù)量的項,且同時刪除任意數(shù)量的項,接受三個參數(shù),起始位置,要刪除的項數(shù),和要插入的任意數(shù)量的項。
      var arr1=['big','small','susu'];
      alert(arr1.splice(1,1,'middle','lalal'));//small
      alert(arr1);//big,middle,lala,susu
  • 位置方法
    .indexOf().lastIndexOf()這兩個方法的使用與字符串一樣。
  • 迭代方法
    每個方法都接受兩個參數(shù):一個是必選的:要在每一項上運行的函數(shù)。另一項是可選的:運作該函數(shù)的作用域。
  • every()對數(shù)組中的每一項運行給定的函數(shù),如果該函數(shù)對每一項都返回true,則返回true。
  • filter()對數(shù)組中的每一項運行給定的函數(shù),f返回該函數(shù)會返回true的項組成的數(shù)組。
  • foreach()對數(shù)組中的每一項運行給定的函數(shù),這個方法沒有返回值。
  • map()對數(shù)組中的每一項運行給定的函數(shù),返回每次調(diào)用的結(jié)果組成的數(shù)組。
  • some()對數(shù)組中的每一項運行給定的函數(shù),如果該函數(shù)對任一項返回true,那么該方法返回true。
  • 歸并發(fā)法
    迭代數(shù)組的所有項,然后構(gòu)建一個最終返回的值。
  • reduce():從數(shù)組的第一項開始,逐個遍歷到最后。
  • reduceRight():從數(shù)組的最后一項開始,向前遍歷到第一項。
    這連個方法,都接受兩個參數(shù):一個在每一項上都調(diào)用的函數(shù)(必選);
    和作為歸并基礎(chǔ)的初始值(可選)。
    這兩個函數(shù)都接受四個參數(shù):前一個值,當(dāng)前值,項的索引,數(shù)組對象。
    注意:這個函數(shù)返回的任何值都會作為第一個參數(shù)傳遞給下一項。
    第一次迭代是從第二個參數(shù)開始。即第一個參數(shù)是第一項,第二個參數(shù)是第二項。
    var num=[1,2,3,4,5,6,7,8,9];
    var newnum=num.reduce(function(pre,cur,index,array){
    return pre+cur;
    })
    alert(newnum);//45
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 第一章: JS簡介 從當(dāng)初簡單的語言,變成了現(xiàn)在能夠處理復(fù)雜計算和交互,擁有閉包、匿名函數(shù), 甚至元編程等...
    LaBaby_閱讀 1,764評論 0 6
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,691評論 0 4
  • Chapter 5 引用類型 Object類型 創(chuàng)建Object實例new Object()var person ...
    云之外閱讀 440評論 0 0
  • 引用類型與傳統(tǒng)面向?qū)ο蟪绦蛟O(shè)計中的類相似,但實現(xiàn)不同。 對象在 JavaScript 中被稱為引用類型的值,而且有...
    BertFu閱讀 401評論 0 0
  • 應(yīng)該是每個人都和我一樣在掙扎吧 有時候太生氣了 就開始口不擇言的對待最親近的人 或許是自己掙扎太痛苦了吧 就想有人...
    九月罷閱讀 144評論 0 0

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