2. JavaScript Array

此文章用于歸納Array的所有方法


在JavaScript中,除了Object晦攒,用得最多的可能就是數(shù)組Array了跛锌。下面我們將一起來總結(jié)一下數(shù)組Array的所有方法。

首先總結(jié)一下Array的屬性:

  • Array.length:返回數(shù)組的長度癌蓖。

然后總結(jié)一下Array的方法:

  • Array.from(arrayLike ,function):此方法接受2個參數(shù),第一個參數(shù)接受一個類數(shù)組對象婚肆,第二個參數(shù)接受一個映射函數(shù)租副。該方法是將arrayLike轉(zhuǎn)換成真正的數(shù)組,如果有第二個參數(shù)旬痹,將會把第一個參數(shù)里的每一個元素在function中作用一遍附井,并返回結(jié)果讨越,構(gòu)成一個新數(shù)組两残,然后返回該數(shù)組。具體操作如下:
function arr(){
 return  Array.from(arguments, function(num){return num*2});   
}
arr(1,2,3,4);//[2, 4, 6, 8]
  • Array.isArray(obj):確定輸入的值是否是一個數(shù)組把跨,如果是人弓,返回true如果不是,返回false着逐。
  • Array.of():是創(chuàng)建數(shù)組的一種方法崔赌,它接受的每一個參數(shù)都將作為新構(gòu)成數(shù)組的一個元素意蛀。該方法返回構(gòu)建完成的數(shù)組。和Array()創(chuàng)建數(shù)組有稍微不同健芭,具體如下:
Array.of(2);       // [2] 
Array.of(1, 2, 3); // [1, 2, 3]
Array(2);          // [ , ]或者[undefined × 2]
Array(1, 2, 3);    // [1, 2, 3]

最后總結(jié)Array實例的方法县钥,也就是array.prototype的方法:

  • concat():該方法用于合并2個或多個數(shù)組,不會改變原數(shù)組慈迈,返回一個新數(shù)組若贮。
var arr1 = ['a', 'b', 'c'];
var arr2 = ['d', 'e', 'f'];
arr1.concat(arr2);//["a", "b", "c", "d", "e", "f"]
arr1.concat(1,2,3)//["a", "b", "c", 1, 2, 3]
  • copyWithin(target, start = 0, end = this.length):該方法接受3個參數(shù),其中第一個參數(shù)為目標位置(必選)痒留,第二個是起始位置(可選)谴麦,第三個是結(jié)束位置(可選)。該方法的作用是將指定的一部分元素復制到同一個數(shù)組指定的位置替換掉伸头,并返回數(shù)組匾效。具體代碼如下:
//從第3個位置開始替換倒數(shù)第2個到倒數(shù)第1個元素,即5
[1,2,3,4,5,6].copyWithin(3,-2,-1)//[1,2,3,5,5,6]
//從第0個位置開始替換第2到第4的元素恤磷,即3,4
[1,2,3,4,5,6].copyWithin(0,2,4)//[3,4,3,4,5,6]
  • entries():將輸入的數(shù)組變?yōu)榈鲗ο竺婧撸墒褂?code>next()或者for of循環(huán)。具體代碼如下:
var a = ['a', 'b', 'c'];
var iterator = a.entries();
console.log(iterator.next()); //Object {value: Array(2), done: false}
for (let e of iterator) {
  console.log(e);
}
// [1, 'b']
// [2, 'c']
  • every(function):該方法接受一個函數(shù)作為參數(shù)扫步,該函數(shù)可以有3個參數(shù)精绎,第一個參數(shù)是當前正在處理的數(shù)組的元素,第二個參數(shù)為當前元素的索引锌妻,第三個參數(shù)為該數(shù)組本身代乃。該方法主要的作用是遍歷每一個元素,看是否每一個元素都能通過function的測試仿粹,如果都通過搁吓,返回true,只要有一個沒通過吭历,返回false堕仔。具體代碼如下:
[1,2,3,4,5,6].every(function(item,index){
   return item>5
})//false
[1,2,3,4,5,6].every(function(item,index){
   return item>0
})//true
  • some(function):與 every(function)類似。只要有一個元素滿足條件晌区,返回true摩骨,沒有一個元素滿足條件,返回false朗若。
[1,2,3,4,5,6].some(function(item,index){
   return item>5
})//true
[1,2,3,4,5,6].some(function(item,index){
   return item>9
})//false
  • fill(value, start = 0, end = this.length):該方法接受3個參數(shù)恼五,第一個參數(shù)為填充的值,第二個參數(shù)和第3個參數(shù)與copyWithin()類似哭懈。具體代碼如下:
//用3替換倒數(shù)第2個到倒數(shù)第1個元素灾馒,即5
[1,2,3,4,5,6].fill(3,-2,-1)//[1,2,3,4,3,6]
//用0替換第2到第4的元素,即3,4
[1,2,3,4,5,6].fill(0,2,4)//[1,2,0,0,5,6]
  • filter(function):該方法的function參數(shù)與every類似遣总,不同的地方在于睬罗,該方法返回一個通過function測試的元素組成的新數(shù)組轨功。具體代碼如下:
[1,2,3,4,5,6].filter(function(item,index){
   return item>5
})//[6]
[1,2,3,4,5,6].filter(function(item,index){
   return item>2
})//[3,4,5,6]
  • find(function):該方法的function參數(shù)與every類似,不同的地方在于容达,該方法返回第一個通過function測試的元素古涧,如果都沒通過,返回undefined花盐。具體代碼如下:
[1,2,3,4,5,6].find(function(item,index){
   return item>5
})//6
[1,2,3,4,5,6].find(function(item,index){
   return item>2
})//3
  • findIndex(function):該方法的function參數(shù)與every類似蒿褂,不同的地方在于,該方法返回第一個通過function測試的元素的索引卒暂,如果都沒通過啄栓,返回-1。具體代碼如下:
[1,2,3,4,5,6].findIndex(function(item,index){
   return item>5
})//5
[1,2,3,4,5,6].findIndex(function(item,index){
   return item>2
})//2
  • forEach(function):該方法的function參數(shù)與every類似也祠,不同的地方在于昙楚,該方法沒有返回值,只是將數(shù)組中每一個元素在函數(shù)中作用一遍诈嘿。具體代碼如下:
var arr = [];
[1,2,3,4,5,6].forEach(function(item,index){
  if(item>2){ arr.push(item); }
})
console.log(arr)//[3, 4, 5, 6]
  • includes(element,fromIndex = 0):該方法接受2個參數(shù)堪旧,第一個參數(shù)是需要尋找的元素,第二參數(shù)可選奖亚,為從什么位置開始尋找淳梦。如果找到了,返回true昔字,如果沒找到爆袍,返回false具體代碼如下:
var arr = [1,2,3]
arr.includes(2);//true
arr.includes(5);//false
arr.includes(2,2)//false
  • indexOf(element,fromIndex = 0):該方法接受2個參數(shù),第一個參數(shù)是需要尋找的元素作郭,第二參數(shù)可選陨囊,表示從什么位置開始尋找。找到了返回當前元素的位置夹攒,如果沒找到蜘醋,返回-1具體代碼如下:
var arr = [1,2,3]
arr.indexOf(2);//1
arr.indexOf(5);//-1
arr.indexOf(2,2)//-1
  • lastIndexOf(element,fromIndex = 0):該方法接受2個參數(shù),第一個參數(shù)是需要尋找的元素咏尝,第二參數(shù)可選压语,表示從什么位置開始尋找。如果找到了编检,返回給定的元素最后一次出現(xiàn)的位置胎食,如果沒找到,返回-1具體代碼如下:
var arr = [1,2,3,1]
arr.lastIndexOf(2);//3
arr.lastIndexOf(5);//-1
arr.lastIndexOf(2,2)//-1
  • join(separator = ','):該方法接受1個參數(shù)(可選)蒙谓,將數(shù)組的所有元素以separator連接為字符串斥季,并返回該字符串训桶。具體代碼如下:
var a = ['a', 'b', 'c'];
a.join();      // 'a,b,c'
a.join(', ');  // 'a, b, c'
a.join(' + '); // 'a + b + c'
a.join('');    // 'abc'
  • keys():該方法作用于entries()類似累驮,將對象變?yōu)榭傻膶ο蠛ㄇ悖€是有所不同。具體代碼如下:
var a = ['a', 'b', 'c'];
var iterator = a.keys();
console.log(iterator.next()); //Object {value: 0, done: false}
for (let e of iterator) {
console.log(e);
}
//1
//2
  • map(function):該方法的function參數(shù)與every類似谤专,不同的地方在于該方法返回一個由function作用之后的新數(shù)組躁锡,該方法。具體代碼如下:
[1,2,3,4,5,6].map(function(item,index){
return item*2
})//[2, 4, 6, 8, 10, 12]
  • pop():該方法會刪除最后一個元素并返回該元素置侍,被刪除元素的數(shù)組長度減少1映之。具體代碼如下:
var arr = [1, 2, 3];
arr.pop();//3
console.log(arr); // [1, 2]
  • push(element):該方法會在最后添加一個元素并返回該數(shù)組的length。具體代碼如下:
var arr = [1, 2, 3];
arr.push(4);//4
console.log(arr); // [1,2,3,4]
  • reduce(function):該方法接受一個function作為參數(shù)蜡坊,把數(shù)組的元素依次放入function中杠输,得到的結(jié)果作為也作為參數(shù)傳入function,一直到所有元素作用完畢秕衙,返回最終結(jié)果蠢甲。具體代碼如下:
var arr = [1,2,3,4,5,6]
arr.reduce(function(element1,element2){
    return element1+element2
})//21
  • reduceRight(function):該方法與reduce()類似,只不過執(zhí)行順序是從右往左据忘。具體代碼如下:
var arr = [1,2,3,4,5,6]
arr.reduceRight(function(element1,element2){
    return element1+element2
})//21
  • reverse()該方法是將數(shù)組中的元素順序反轉(zhuǎn)鹦牛,并返回該數(shù)組。具體代碼如下:
var arr = [1,2,3,4,5,6]
arr.reverse()
  • shift():該方法和pop()類似勇吊,只不過pop刪除最后一個元素曼追,shift()刪除第一個元素。
var arr = [1, 2, 3];
arr.shift();//1
console.log(arr); // [2, 3]
  • slice(start = 0,end=this.length):該方法接受2個參數(shù)汉规,一個開始的位置礼殊,一個結(jié)束的位置(不包括結(jié)束的位置)。選擇數(shù)組的這一部分淺拷貝到一個新數(shù)組對象里面针史,并返回新數(shù)組膏燕。原數(shù)組不會改變。具體代碼如下:
var arr = [1,2,3,4,5,6]
//選擇第2和第4悟民,即3,4
arr.slice(2,4)//[3,4]
console.log(arr)// [1,2,3,4,5,6]
  • splice(start = 0, deleteCount, element ...):該方法接受3個參數(shù)坝辫,第一個參數(shù)是修改的開始位置,第二個參數(shù)是可選的射亏,表示要移除數(shù)組的個數(shù)近忙,第3個參數(shù)是加入的元素。該方法返回被刪除的數(shù)組智润,并且原數(shù)組會被修改及舍。具體代碼如下:
var arr = [1,2,3,4,5,6,7,8]
//從第2開始,刪除4個元素窟绷,并添加moonburn字符串
arr.splice(2,4,'moonburn')//[3,4,5,6]
console.log(arr)// [1,2,'moonburn',7,8]
  • sort(compareFunction):該方法接受一個參數(shù)(可選)锯玛。如果不輸入?yún)?shù),會自發(fā)的給數(shù)組排序,默認排序順序是根據(jù)字符串Unicode碼點攘残。也可以加入compareFunction拙友,自己排序。具體代碼如下:
var arr = [1,20,3,40,5,60]
arr.sort(function(element1,element2){
    return element1>element2
})
console.log(arr)// [1, 3, 5, 20, 40, 60]
  • toLocaleString():數(shù)組的toLocaleString()會將所有的元素都作用一遍toLocaleString()歼郭,并拼接為字符串遗契。具體如下:
var arr = [123,new Date(),'string']
arr.toLocaleString()//"123,2017-6-8 11:04:50,string"
  • toString()toLocaleString()類似,只是不帶地域特色病曾。具體如下:
var arr = [123,new Date(),'string']
arr.toString()//"123,Thu Jun 08 2017 11:08:24 GMT+0800 (中國標準時間),string"
  • unshift(element····):將一個或多個元素添加到數(shù)組的開頭牍蜂。返回新數(shù)組的length具體代碼如下:
var arr = [1,2,3,4];
arr.unshift('a','b');//6
console.log(arr);//["a", "b", 1, 2, 3, 4]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市泰涂,隨后出現(xiàn)的幾起案子鲫竞,更是在濱河造成了極大的恐慌,老刑警劉巖逼蒙,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贡茅,死亡現(xiàn)場離奇詭異,居然都是意外死亡其做,警方通過查閱死者的電腦和手機顶考,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妖泄,“玉大人驹沿,你說我怎么就攤上這事〉负” “怎么了渊季?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長罚渐。 經(jīng)常有香客問我却汉,道長,這世上最難降的妖魔是什么荷并? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任合砂,我火速辦了婚禮,結(jié)果婚禮上源织,老公的妹妹穿的比我還像新娘翩伪。我一直安慰自己,他們只是感情好谈息,可當我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布缘屹。 她就那樣靜靜地躺著,像睡著了一般侠仇。 火紅的嫁衣襯著肌膚如雪轻姿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音互亮,去河邊找鬼犁享。 笑死,一個胖子當著我的面吹牛胳挎,可吹牛的內(nèi)容都是我干的饼疙。 我是一名探鬼主播溺森,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼慕爬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了屏积?” 一聲冷哼從身側(cè)響起医窿,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炊林,沒想到半個月后姥卢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡渣聚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年独榴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奕枝。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡棺榔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出隘道,到底是詐尸還是另有隱情症歇,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布谭梗,位于F島的核電站忘晤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏激捏。R本人自食惡果不足惜设塔,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望远舅。 院中可真熱鬧壹置,春花似錦、人聲如沸表谊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爆办。三九已至难咕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背余佃。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工暮刃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人爆土。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓椭懊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親步势。 傳聞我的和親對象是個殘疾皇子氧猬,可洞房花燭夜當晚...
    茶點故事閱讀 42,828評論 2 345

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