Array相關(guān)方法總結(jié)

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

  • var array = new Array();
  • var array = new Array(10);
  • var array = new Array("red","blue","green");
  • var array = [];
  • var array = [1,2,3,4,5,6];

檢測數(shù)組

確定某個(gè)對(duì)象是否是數(shù)組:

  • value instanceof Array
  • Array.isArray(value)

轉(zhuǎn)換方法:toString() valueOf() toLocaleString

  • toString 方法返回一個(gè)字符串,該字符串由數(shù)組中的每個(gè)元素的 toString() 返回值經(jīng)調(diào)用 join() 方法連接(由逗號(hào)隔開)組成
var monthNames = ['Jan', 'Feb', 'Mar', 'Apr'];
var myVar = monthNames.toString(); // assigns "Jan,Feb,Mar,Apr" to myVar.
  • toLocaleString() 返回一個(gè)字符串表示數(shù)組中的元素。數(shù)組中的元素將使用各自的 toLocaleString 方法轉(zhuǎn)成字符串,這些字符串將使用一個(gè)特定語言環(huán)境的字符串(例如一個(gè)逗號(hào) ",")隔開。

  • valueOf() 方法仍然會(huì)返回該數(shù)組 (如果放在console.log()中輸出,會(huì)自動(dòng)調(diào)用toString方法)

棧方法:讓數(shù)組的行為類似于數(shù)據(jù)結(jié)構(gòu)中的棧

  • pop():刪除數(shù)組的最后一個(gè)元素,并返回該元素
  • push(): 在數(shù)組的末尾增加一個(gè)或多個(gè)元素,并返回新數(shù)組的長度
var numbers = [1, 2, 3];
numbers.push(4);
numbers.push(5,6,7);

隊(duì)列方法

  • shift():刪除數(shù)組的第一個(gè)元素,并返回該元素
  • push()
  • unshift():在數(shù)組的開頭增加一個(gè)或多個(gè)元素,并返回新數(shù)組的長度

排序方法 在原數(shù)組的基礎(chǔ)上進(jìn)行修改

  • reverse(): 顛倒數(shù)組中元素的排列順序
  • sort(): 對(duì)數(shù)組元素進(jìn)行排序,并返回當(dāng)前數(shù)組,默認(rèn)排序順序是根據(jù)字符串的Unicode碼點(diǎn)
var scores = [1, 10, 21, 2]; 
scores.sort();  // [1, 10, 2, 21]  
  • sort(compareFunction): 對(duì)數(shù)組元素按照指定的比較方法進(jìn)行排序,并返回當(dāng)前數(shù)組
如果指明了 compareFunction ,那么數(shù)組會(huì)按照調(diào)用該函數(shù)的返回值排序。即 a 和 b 是兩個(gè)將要被比較的元素:

如果 compareFunction(a, b) 小于 0 ,那么 a 會(huì)被排列到 b 之前;
如果 compareFunction(a, b) 等于 0 , a 和 b 的相對(duì)位置不變。
如果 compareFunction(a, b) 大于 0 , b 會(huì)被排列到 a 之前。
compareFunction(a, b) 必須總是對(duì)相同的輸入返回相同的比較結(jié)果,否則排序的結(jié)果將是不確定的。

var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  return a - b;
});
console.log(numbers);

// [1, 2, 3, 4, 5]

其他方法

  • fill() 方法將一個(gè)數(shù)組的所有元素從開始索引填充到具有靜態(tài)值的結(jié)束索引
arr.fill(value, start, end)
value 用來填充數(shù)組元素的值
start 開始索引
end 結(jié)束索引
[1, 2, 3].fill(4)            // [4, 4, 4]
[1, 2, 3].fill(4, 1)         // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2)      // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1)      // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2)    // [4, 2, 3]
  • splice()方法:在任意的位置給數(shù)組添加或者刪除任意個(gè)元素
array.splice(start[, deleteCount][,item1,item2, ...] )

var myFish = ["angel", "clown", "mandarin", "surgeon"];

//從第 2 位開始刪除 0 個(gè)元素,插入 "drum"
var removed = myFish.splice(2, 0, "drum");
//運(yùn)算后的 myFish:["angel", "clown", "drum", "mandarin", "surgeon"]
//被刪除元素?cái)?shù)組:[],沒有元素被刪除

//從第 3 位開始刪除 1 個(gè)元素
removed = myFish.splice(3, 1);
//運(yùn)算后的myFish:["angel", "clown", "drum", "surgeon"]
//被刪除元素?cái)?shù)組:["mandarin"]

//從第 2 位開始刪除 1 個(gè)元素,然后插入 "trumpet"
removed = myFish.splice(2, 1, "trumpet");
//運(yùn)算后的myFish: ["angel", "clown", "trumpet", "surgeon"]
//被刪除元素?cái)?shù)組:["drum"]

//從第 0 位開始刪除 2 個(gè)元素,然后插入 "parrot", "anemone" 和 "blue"
removed = myFish.splice(0, 2, "parrot", "anemone", "blue");
//運(yùn)算后的myFish:["parrot", "anemone", "blue", "trumpet", "surgeon"]
//被刪除元素的數(shù)組:["angel", "clown"]

//從第 3 位開始刪除 2 個(gè)元素
removed = myFish.splice(3, Number.MAX_VALUE);
//運(yùn)算后的myFish: ["parrot", "anemone", "blue"]
//被刪除元素的數(shù)組:["trumpet", "surgeon"]
  • concat(): 返回一個(gè)由當(dāng)前數(shù)組和其他若干個(gè)數(shù)組或者若干個(gè)非數(shù)組值組合成的新數(shù)組
  • includes():判斷當(dāng)前數(shù)組是否包含指定的值,如果是返回true,否則返回false
  • join():連接所有數(shù)組元素組合成一個(gè)字符串,可以想join()傳入連接符號(hào)作為參數(shù)
  • slice():抽取當(dāng)前數(shù)組中的一段元素組合成一個(gè)新數(shù)組
arr.slice();
arr.slice(begin);
arr.alice(begin, end)

var a = ['zero', 'one', 'two', 'three'];
var slice = a.slice(1,3);
console.log(slice); // ['one', 'two']
  • indexOf():返回?cái)?shù)組中第一個(gè)與指定值相等的元素的索引,如果找不到,則返回-1
  • lastIndexOf():返回?cái)?shù)組中最后一個(gè)與指定值相等的元素的索引,如果找不到,則返回-1

Iteration方法

  • forEach():為數(shù)組中的每個(gè)元素執(zhí)行一次回調(diào)函數(shù)
let a = ['a', 'b', 'c'];

a.forEach(function(element) {
    console.log(element);
});

// a
// b
// c
  • entries()方法:返回一個(gè)新的Array Iterator 對(duì)象,該對(duì)象包含數(shù)組中每個(gè)索引的鍵值對(duì)
var arr = ["a", "b", "c"];
var iterator = arr.entries();
// undefined

console.log(iterator);
// Array Iterator {}

console.log(iterator.next().value); 
// [0, "a"]
console.log(iterator.next().value); 
// [1, "b"]
console.log(iterator.next().value); 
// [2, "c"]
  • every()方法:如果數(shù)組中的每個(gè)元素都滿足測試函數(shù),則返回true,否則返回false
function isBigEnough(element, index, array) {
  return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// passed 的值為 false
  • some()方法: 如果數(shù)組中至少有一個(gè)元素滿足測試函數(shù),則返回 true,否則返回 false。

  • filter()方法: 將所有在過濾函數(shù)中返回 true 的數(shù)組元素放進(jìn)一個(gè)新數(shù)組中并返回。

function isBigEnough(value) {
  return value >= 10;
}

var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]
  • find()方法: 找到第一個(gè)滿足測試函數(shù)的元素并返回那個(gè)元素的值,如果找不到,則返回 undefined。
  • findIndex()方法: 找到第一個(gè)滿足測試函數(shù)的元素并返回那個(gè)元素的索引,如果找不到,則返回 -1。
  • map()方法:返回一個(gè)由回調(diào)函數(shù)的返回值組成的新數(shù)組。
  • reduce()方法: 從左到右為每個(gè)數(shù)組元素執(zhí)行一次回調(diào)函數(shù),并把上次回調(diào)函數(shù)的返回值放在一個(gè)暫存器中傳給下次回調(diào)函數(shù),并返回最后一次回調(diào)函數(shù)的返回值。
var sum = [0, 1, 2, 3].reduce(function(acc, val) {
  return acc + val;
}, 0);

console.log(sum);
// 6
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評(píng)論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評(píng)論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評(píng)論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,779評(píng)論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評(píng)論 1 330
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評(píng)論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,287評(píng)論 0 291
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評(píng)論 1 338
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,515評(píng)論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,750評(píng)論 1 375
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,933評(píng)論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評(píng)論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,492評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,703評(píng)論 2 380

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

  • PHP常用函數(shù)大全 usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解...
    上街買菜丶迷倒老太閱讀 1,381評(píng)論 0 20
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒。 unpack() 函數(shù)從二進(jìn)制字符串對(duì)數(shù)據(jù)進(jìn)行解包。 uni...
    思?jí)鬚HP閱讀 2,001評(píng)論 1 24
  • 《思考致富》今天看完了,這次看的感覺跟上次完全不同。 對(duì)照著恐懼貧窮的癥狀,我全部都有:凡是漠不關(guān)心~...
    徐麗紅閱讀 105評(píng)論 1 2
  • 他是一個(gè)小王子,他有自己的星球,但是它很小……就如《小時(shí)代》里崇光所說“我們活在浩瀚的宇宙里,漫天漂浮的宇...
    月亮忘記_崎閱讀 1,566評(píng)論 1 3
  • 剛開始看到這名字還以為是父女。。咳,看了幾章發(fā)現(xiàn)竟然是女尊!嗯,總之,這是個(gè)很神奇的文,雖然男主各種別扭,打臉報(bào)仇...
    悠然逛南山閱讀 1,019評(píng)論 0 0