js數(shù)組方法全面總結(jié)

創(chuàng)建數(shù)組

  • 使用Array構(gòu)造函數(shù)
var a = new Array()
var b = new Array(5);  //創(chuàng)建長(zhǎng)度為5的數(shù)組
var c = new Array("a","b","c");
  • 使用數(shù)組字面量表示法
var a = [];
var b = [5];      //創(chuàng)建一個(gè)含數(shù)字5的數(shù)組
var c = ["a","b","c"];

數(shù)組屬性

length表示數(shù)組的長(zhǎng)度

var colors = ["red","green","blue","black"];
colors.length                   //4

length屬性并不是只讀的睡蟋,通過(guò)設(shè)置該值可以從數(shù)組末尾刪除項(xiàng)或向數(shù)組中添加項(xiàng)

var colors = ["red","green","blue","black"];
colors.length = 2;        //colors:["red","green"]
colors.length = 4;        //colors:["red","green",undefined,undefined]

數(shù)組方法

  • 棧第岖、隊(duì)列方法

  1. push(item...) 向數(shù)組中添加元素,返回修改后數(shù)組的長(zhǎng)度
var numbers= [1,2,3,4];
numbers.push(5)           //5       numbers:[1,2,3,4,5]
numbers.push(6,7)         //7       numbers:[1,2,3,4,5,6,7]
  1. pop() 從數(shù)組末尾移除一項(xiàng),減少數(shù)組的長(zhǎng)度您炉,返回移除的項(xiàng)
var numbers= [1,2,3,4];
numbers.pop()           //4         numbers:[1,2,3]
  1. unshift(item...) 向數(shù)組前端添加任意項(xiàng)驻粟,返回** 修改后數(shù)組的長(zhǎng)度 **
var numbers= [1,2,3,4];
numbers.unshift(5)           //5       numbers:[5,1,2,3,4]
numbers.unshift(6,7)         //7       numbers:[6,7,5,1,2,3,4]
  1. shift() 移除數(shù)組第一項(xiàng)饭宾,減少數(shù)組的長(zhǎng)度批糟,返回移除的項(xiàng)
var numbers= [1,2,3,4];
numbers.shift()           //1         numbers:[2,3,4]
  • 排序方法

  1. reverse()反轉(zhuǎn)數(shù)組項(xiàng)的順序,改變?cè)瓟?shù)組
var numbers= [1,2,3,4];
numbers.reverse()          //[4,3,2,1]         numbers:[4,3,2,1]
  1. sort()默認(rèn)情況下看铆,即無(wú)參數(shù)情況徽鼎,sort()方法按升序排列數(shù)組。該方法會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的tostring()方法弹惦,然后比較字符串否淤,因此即使數(shù)組中每一項(xiàng)都是數(shù)值,sort()方法比較的也是字符串棠隐。
var numbers= [1,15,5,10];
numbers.sort()          //[1, 10, 15, 5]         numbers:[1, 10, 15, 5]

sort()方法可以接受一個(gè)比較函數(shù)作為參數(shù)石抡。其中比較函數(shù)接受兩個(gè)參數(shù),如果兩個(gè)參數(shù)排序不需要交換位置則返回負(fù)數(shù)助泽,如果需要交換位置則返回一個(gè)正數(shù)啰扛,如果兩個(gè)參數(shù)相等則返回0

var numbers= [1,15,5,10];
function compare(val1,val2){
      if(val1 < val2){
         return -1;
      }
      else if(val1 > val2){
         return 1;
      }
      else{
         return 0;   
      }
}
numbers.sort(compare)          //[1, 5, 10,15]         numbers:[1, 5, 10,15]  
  • 操作嗡贺、位置方法

  1. concat()其參數(shù)可以是一個(gè)或多個(gè)項(xiàng)隐解,也可以是一個(gè)或多個(gè)數(shù)組。創(chuàng)建一個(gè)當(dāng)前數(shù)組的副本诫睬,然后在數(shù)組末尾添加參數(shù)項(xiàng)煞茫,并返回新的數(shù)組,原數(shù)組不變
 var numbers= [1,2,3,4];
 numbers.concat(5,[6,7])          //[1,2,3,4,5,6,7]         numbers:[1,2,3,4]
  1. slice()獲取截取數(shù)組摄凡,如果是一個(gè)參數(shù)续徽,則獲取從該參數(shù)位置開始到數(shù)組結(jié)束所有值,如果有兩個(gè)參數(shù)架谎,則獲取從起始值位置到結(jié)束值位置的值(不包括結(jié)束值位置項(xiàng))炸宵,返回新的數(shù)組。原數(shù)組不變
    如果結(jié)束值小于起始位置則返回空數(shù)組谷扣。
 var numbers= [1,2,3,4];
 numbers.slice(2)          //[3,4]         numbers:[1,2,3,4]
numbers.slice(1,3)       //[2,3]         numbers:[1,2,3,4]

** 注意:** * 如果參數(shù)中存在負(fù)數(shù)土全,則將參數(shù)值加上數(shù)組長(zhǎng)度來(lái)計(jì)算。如:*

var numbers= [1,2,3,4];
numbers.slice(-1)          //[4]         numbers:[1,2,3,4]
numbers.slice(-4,-2)       //[1,2]         numbers:[1,2,3,4]
  1. splice() 返回刪除項(xiàng)組成的數(shù)組会涎,原數(shù)組被改變

    • 刪除 :從指定位置刪除指定項(xiàng)數(shù)
      splice(0,3) 表示刪除數(shù)組的[0][1][2]位置的三項(xiàng)
    • 插入 : 從指定位置刪除0項(xiàng)裹匙,再添加項(xiàng)
      splice(1,0,3,4) 表示從數(shù)組的第[1]項(xiàng)開始插入3,4兩個(gè)值
    • 替換 :從指定位置刪除指定項(xiàng)數(shù)末秃,再添加項(xiàng)
      splice(1,2,3,4) 表示從數(shù)組[1][2]位置上的值被替換成3概页,4兩個(gè)值

var numbers= [1,2,3,4];
numbers.splice(1,2) //[2,3] numbers:[1,4]
numbers.splice(1,0,2,3,4,5) //[] numbers:[1,2,3,4,5,4]
numbers.splice(2,2,4,5) //[3,4] numbers:[1,2,4,5,5,4]

4. `indexOf()`從前向后查找,接受兩個(gè)參數(shù):查找的項(xiàng)和查找的起點(diǎn)位置(可選)练慕,默認(rèn)從數(shù)組的起始位置向后查找惰匙,返回**索引值**
```javascript
var numbers= [1,2,3,4,4,5,3,1,2];
numbers.indexOf(2)              //1        numbers:[1,2,3,4,4,5,3,1,2]
numbers.indexOf(2,4)              //8       numbers:[1,2,3,4,4,5,3,1,2]
  1. lastIndexOf()從后向前查找技掏,接受兩個(gè)參數(shù):查找的項(xiàng)和查找的起點(diǎn)位置(可選),默認(rèn)從數(shù)組的結(jié)束位置向前查找项鬼,返回索引值
var numbers= [1,2,3,4,4,5,3,1,2];
numbers.lastIndexOf(2)              //8        numbers:[1,2,3,4,4,5,3,1,2]
numbers.lastIndexOf(4,3)            //3        numbers:[1,2,3,4,4,5,3,1,2], 從[3]位向前查找
  • 遍歷方法

  1. every(fn)對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù)哑梳,如果該函數(shù)對(duì)每一項(xiàng)都返回true,則返回true
  var numbers= [1,2,3,4,5];
 numbers.every(function(item,index,array){
       return (item>0);
 })                                                          //true       
numbers.every(function(item,index,array){
       return (item>2);
 })                                                         //false         
  1. filter(fn)對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組
  var numbers= [1,2,3,4,5];
 numbers.filter(function(item,index,array){
       return (item>2);
 })                                                          //[3,4,5]       
  1. forEach(fn)對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù)绘盟,沒有返回值
  2. map(fn)對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù)鸠真,返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組
  var numbers= [1,2,3,4,5];
 numbers.map(function(item,index,array){
       return (item+10);
 })                                                          //[11,12,13,14,15]       
  1. some(fn)對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),如果該函數(shù)對(duì)任一項(xiàng)返回true,則返回true
   var numbers= [1,2,3,4,5];
  numbers.some(function(item,index,array){
        return (item>3);
  })                                                          //true  
  • 歸并方法

以下兩個(gè)方法都接受兩個(gè)參數(shù)龄毡,一個(gè)是在數(shù)組每一項(xiàng)上調(diào)用的函數(shù)吠卷,另一個(gè)可選參數(shù)是作為歸并基礎(chǔ)的初始值。其中作為參數(shù)的函數(shù)接受4個(gè)參數(shù):前一個(gè)值沦零、當(dāng)前值祭隔、項(xiàng)和索引和數(shù)組對(duì)象。這個(gè)函數(shù)返回的任何值都會(huì)作為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng)

  1. reduce(fn) 從頭開始遍歷
  2. reduceRight(ffn)從尾開始遍歷
   var numbers= [1,2,3,4,5];
  numbers.reduce(function(pre,cur,index,array){
        return pre+cur;
  })                                               //15   對(duì)數(shù)組求和
numbers.reduce(function(pre,cur,index,array){
        return pre+cur;
  },10)                                           //25   以10為基數(shù)對(duì)求數(shù)組求和
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蠢终,一起剝皮案震驚了整個(gè)濱河市序攘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寻拂,老刑警劉巖程奠,帶你破解...
    沈念sama閱讀 210,914評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異祭钉,居然都是意外死亡瞄沙,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門慌核,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)距境,“玉大人,你說(shuō)我怎么就攤上這事垮卓〉婀穑” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵粟按,是天一觀的道長(zhǎng)诬滩。 經(jīng)常有香客問(wèn)我,道長(zhǎng)灭将,這世上最難降的妖魔是什么疼鸟? 我笑而不...
    開封第一講書人閱讀 56,309評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮庙曙,結(jié)果婚禮上空镜,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好吴攒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評(píng)論 5 384
  • 文/花漫 我一把揭開白布张抄。 她就那樣靜靜地躺著,像睡著了一般舶斧。 火紅的嫁衣襯著肌膚如雪欣鳖。 梳的紋絲不亂的頭發(fā)上察皇,一...
    開封第一講書人閱讀 49,730評(píng)論 1 289
  • 那天茴厉,我揣著相機(jī)與錄音,去河邊找鬼什荣。 笑死矾缓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稻爬。 我是一名探鬼主播嗜闻,決...
    沈念sama閱讀 38,882評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼桅锄!你這毒婦竟也來(lái)了琉雳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,643評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤友瘤,失蹤者是張志新(化名)和其女友劉穎翠肘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辫秧,經(jīng)...
    沈念sama閱讀 44,095評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡束倍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盟戏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绪妹。...
    茶點(diǎn)故事閱讀 38,566評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖柿究,靈堂內(nèi)的尸體忽然破棺而出邮旷,到底是詐尸還是另有隱情,我是刑警寧澤蝇摸,帶...
    沈念sama閱讀 34,253評(píng)論 4 328
  • 正文 年R本政府宣布婶肩,位于F島的核電站,受9級(jí)特大地震影響探入,放射性物質(zhì)發(fā)生泄漏狡孔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評(píng)論 3 312
  • 文/蒙蒙 一蜂嗽、第九天 我趴在偏房一處隱蔽的房頂上張望苗膝。 院中可真熱鬧,春花似錦植旧、人聲如沸辱揭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)问窃。三九已至亥鬓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間域庇,已是汗流浹背嵌戈。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留听皿,地道東北人熟呛。 一個(gè)月前我還...
    沈念sama閱讀 46,248評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像尉姨,于是被迫代替她去往敵國(guó)和親庵朝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 第一章: JS簡(jiǎn)介 從當(dāng)初簡(jiǎn)單的語(yǔ)言又厉,變成了現(xiàn)在能夠處理復(fù)雜計(jì)算和交互九府,擁有閉包、匿名函數(shù)覆致, 甚至元編程等...
    LaBaby_閱讀 1,651評(píng)論 0 6
  • 本文總結(jié)了數(shù)組所有的方法侄旬。 1. 檢測(cè)對(duì)象是不是數(shù)組 instanceof操作符 Array.isArray()方...
    胡不歸vac閱讀 674評(píng)論 0 1
  • 由于最近都在freecodecamp上刷代碼,運(yùn)用了很多JavaScript數(shù)組的方法篷朵,因此做了一份關(guān)于JavaS...
    2bc5f46e925b閱讀 1,965評(píng)論 0 16
  • Javascript有很多數(shù)組的方法勾怒,有的人有W3C的API,還可以去MDN上去找声旺,但是我覺得API上說(shuō)的不全笔链,M...
    頑皮的雪狐七七閱讀 4,067評(píng)論 0 6
  • 第5章 引用類型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,216評(píng)論 0 4