數(shù)組的常用方法總結(jié)

1. join()

join(’參數(shù)‘)把數(shù)組的元素以傳入的參數(shù)為分割符剖效,轉(zhuǎn)換成字符串撵渡。

let arr = [1,2,3,4,5];
let str = arr.join(',');
console.log(str) // -> '1,2,3,4,5';

2.push()和pop()

push(): 可以接收任意數(shù)量的參數(shù),把它們逐個(gè)添加到數(shù)組末尾豪诲,并返回修改后數(shù)組的長(zhǎng)度挥等。

pop():數(shù)組末尾移除最后一項(xiàng),減少數(shù)組的 length 值,然后返回移除的項(xiàng)芋绸。

let arr = ['張三','李四','王五'];
let count = arr.push('馬六');
console.log(arr) // -> ['張三','李四','王五','馬六']
console.log(count) // -> 4

let item = arr.pop();
console.log(item) // -> 馬六;

3.shift() 和 unshift()

shift():刪除原數(shù)組第一項(xiàng)媒殉,并返回刪除元素的值;如果數(shù)組為空則返回undefined 侥钳。

unshift:將參數(shù)添加到原數(shù)組開(kāi)頭适袜,并返回?cái)?shù)組的長(zhǎng)度 。

let arr = ['張三','李四','王五'];
let item = arr.shift();
console.log(arr) // -> ['李四','王五']
console.log(item); // -> 張三

let count = arr.unshift('馬六');

console.log(arr) // -> ['馬六','李四','王五']
console.log(count) // -> 3

4.reverse();

將數(shù)組的數(shù)據(jù)進(jìn)行反轉(zhuǎn)舷夺,并且返回反轉(zhuǎn)后的數(shù)組苦酱,會(huì)改變?cè)瓟?shù)組

let arr = [1,2,3,4,5];
let arr1 = arr.reverse();
console.log(arr1) // -> [5,4,3,2,1]
console.log(arr) // -> [5,4,3,2,1]

5.sort();

對(duì)數(shù)組內(nèi)的數(shù)據(jù)進(jìn)行排序(默認(rèn)為升序),并且返回排過(guò)序的新數(shù)組给猾,會(huì)改變?cè)瓉?lái)的數(shù)組

let arr = [12,2,43,5,2,5];
console.log(arr.sort()) // -> [12, 2, 2, 43, 5, 5]
// 注意:通過(guò)上面的案例疫萤,你會(huì)發(fā)現(xiàn) 打印的數(shù)組和原數(shù)組比較還是有變化的 [12,2,43,5,2,5] -> [12, 2, 2, 43, 5, 5];但是有沒(méi)有達(dá)到我們想要的結(jié)果,這是為什么呢敢伸?
// 因?yàn)榕判蚴轻槍?duì)字符的排序扯饶,先使用數(shù)組的toString()方法轉(zhuǎn)為字符串,再逐位比較池颈,3是大于12的尾序,因?yàn)槭孜?>1,不要與Number型的數(shù)據(jù)排序混淆躯砰。

5.1那如果需要數(shù)值排序怎么辦呢每币?

// 如果需要數(shù)值排序,sort(callback) 需要傳入一個(gè)回調(diào)涵數(shù)琢歇,該函數(shù)應(yīng)該具有兩個(gè)參數(shù)兰怠,比較這兩個(gè)參數(shù),然后返回一個(gè)用于說(shuō)明這兩個(gè)值的相對(duì)順序的數(shù)字(a-b)李茫;
例如:
let arr = [12,2,43,5,2,5];
console.log(arr.sort((a,b)=>a-b)) // -> [2, 2, 5, 5, 12, 43]

6.slice();

截取指定位置的數(shù)組揭保,并且返回截取的數(shù)組,不會(huì)改變?cè)瓟?shù)組

// 注意:slice(startIndex, endIndex)可以有兩個(gè)參數(shù)魄宏,startIndex為必選秸侣,表示從第幾位開(kāi)始;endIndex為可選宠互,表示到第幾位結(jié)束(不包含endIndex位)塔次,省略表示到最后一位;startIndex和endIndex都可以為負(fù)數(shù)名秀,負(fù)數(shù)時(shí)表示從最后一位開(kāi)始算起,如-1表示最后一位藕溅。
let arr =  ['張三','李四','王五','馬六'];
console.log(arr.slice(1,3)); // -> ['李四', '王五']
console.log(arr) // -> ['張三','李四','王五','馬六']; 原數(shù)組是沒(méi)有改變的匕得。

7.splice();

向數(shù)組中添加,或從數(shù)組刪除,或替換數(shù)組中的元素汁掠,然后返回被刪除/替換的元素略吨。

// 注意:splice(start,num,val1,val2,...); 所有參數(shù)全部可選。和 slice 相比 splice 是會(huì)改變?cè)瓟?shù)組的考阱。
// start 是開(kāi)始位置,可以為負(fù)數(shù)翠忠,-1就代表從最后一位開(kāi)始,num代表要?jiǎng)h除或者替換的長(zhǎng)度乞榨,不能為負(fù)數(shù)秽之。
let arr = ['張三','李四','王五','馬六'];
console.log(arr.splice(2,1)) // -> ['王五']
console.log(arr) // -> ['張三','李四','馬六']

let arr = ['張三','李四','王五','馬六'];
console.log(arr.splice(2,1,'七郎')) // -> ['王五'] 
console.log(arr) // -> ['張三', '李四', '七郎', '馬六']

8.toString();

將數(shù)組轉(zhuǎn)換成字符串,類似于沒(méi)有參數(shù)的join()吃既。該方法會(huì)在數(shù)據(jù)發(fā)生隱式類型轉(zhuǎn)換時(shí)被自動(dòng)調(diào)用考榨,如果手動(dòng)調(diào)用,就是直接轉(zhuǎn)為字符串鹦倚。不會(huì)改變?cè)瓟?shù)組

let arr = [1,2,3,4,5,6];
console.log(arr.toString()) // -> '1,2,3,4,5,6'
// 注意:沒(méi)有參數(shù)河质。

9.indexOf();

根據(jù)指定的數(shù)據(jù),從左向右震叙,查詢?cè)跀?shù)組中出現(xiàn)的位置掀鹅,如果不存在指定的數(shù)據(jù),返回-1媒楼,找到了指定的數(shù)據(jù)返回該數(shù)據(jù)的索引

// 注意:indexOf(value, start);value為要查詢的數(shù)據(jù)乐尊;start為可選,表示開(kāi)始查詢的位置匣砖,當(dāng)start為負(fù)數(shù)時(shí)科吭,從數(shù)組的尾部向前數(shù);如果查詢不到value的存在猴鲫,則方法返回-1

let arr = ['張三','李四','王五','馬六'];
console.log(arr.indexOf('李四')) // -> 1
console.log(arr.indexOf('李四',2)) // -> -1

10.forEach()

ES5新增的方法对人,用來(lái)遍歷數(shù)組,沒(méi)有返回值拂共,

// 注意:forEach(callback);callback默認(rèn)有三個(gè)參數(shù)牺弄,分別為value(遍歷到的數(shù)組的數(shù)據(jù)),index(對(duì)應(yīng)的索引)宜狐,self(數(shù)組自身)势告。
let arr = ['張三','李四','王五','馬六']
let a = arr.forEach((item,index,self)=>{
    console.log(value + "--" + index + "--" + (arr === self));
})
// 打印結(jié)果為:
// 張三--0--true
// 李四--1--true
// 王五--2--true
// 馬六--3--true
console.log(a);  // -> undefined---forEach沒(méi)有返回值
//該方法為遍歷方法,不會(huì)修改原數(shù)組

11.map()抚恒;

1.同forEach功能咱台;
2.map的回調(diào)函數(shù)會(huì)將執(zhí)行結(jié)果返回,最后map將所有回調(diào)函數(shù)的返回值組成新數(shù)組返回俭驮。

//注意:map(callback);callback默認(rèn)有三個(gè)參數(shù)回溺,分別為value春贸,index,self遗遵。跟上面的forEach()的參數(shù)一樣
let arr = ['張三','李四','王五','馬六'];
let arr1 = arr.map(item => {
    return '你好:'+item
})
console.log(arr1) // -> ['你好:張三', '你好:李四', '你好:王五', '你好:馬六']

12.filter();

1.同forEach功能萍恕;2.filter的回調(diào)函數(shù)需要返回布爾值,當(dāng)為true時(shí)车要,將本次數(shù)組的數(shù)據(jù)返回給filter允粤,最后filter將所有回調(diào)函數(shù)的返回值組成新數(shù)組返回(此功能可理解為“過(guò)濾”)。

// 注意:filter(callback);callback默認(rèn)有三個(gè)參數(shù)翼岁,分別為value类垫,index,self登澜。
let arr = [1,2,3,4,5,6];
let arr1 = arr.filter((value,index,self)=>{
    console.log(item) // -> 1,2,3,4,5,6
    console.log(index) // -> 0,1,2,3,4,5
    console.log(self) // -> [1,2,3,4,5,6]
    return item > 3
})

console.log(arr1) // -> [4,5,6]

13.find();

數(shù)組的循環(huán)阔挠,查找到符合條件的值并且打斷循環(huán)返回找到的值;

let arr = ['張三','李四','王五','馬六'];
let str = arr.find(item => item == '李四');
console.log(str); // -> '李四'

14.findIndex();

數(shù)組的循環(huán)脑蠕,查找到符合條件的索引并且打斷循環(huán)返回找到的索引值

let arr = ['張三','李四','王五','馬六'];
let index = arr.findIndex(item => item == '李四');
console.log(index); // -> 1;

15.every();

判斷數(shù)組中每一項(xiàng)是否都滿足條件购撼,只有所有項(xiàng)都滿足條件,才會(huì)返回true谴仙。

// 注意: every()接收一個(gè)回調(diào)函數(shù)作為參數(shù)迂求,這個(gè)回調(diào)函數(shù)需要有返回值,every(callback);callback默認(rèn)有三個(gè)參數(shù)晃跺,分別為value揩局,index,self掀虎。
let arr = [1,2,3,4,5,6];
let bool = arr.every(item => item > 0);
console.log(bool); // -> true;

let bool = arr.every(item => item > 3);
console.log(bool); // -> false;

16.some();

判斷數(shù)組中是否存在滿足條件的項(xiàng)凌盯,只要有一項(xiàng)滿足條件,就會(huì)返回true烹玉。否側(cè)就會(huì)返回false

//注意: some()接收一個(gè)回調(diào)函數(shù)作為參數(shù)驰怎,這個(gè)回調(diào)函數(shù)需要有返回值,some(callback);callback默認(rèn)有三個(gè)參數(shù)二打,分別為value县忌,index,self继效。
let arr = [1,2,3,4,5,6];
let bool = arr.some(item => item > 3);
console.log(bool) // -> true;

let bool = arr.some(item => item > 6);
console.log(bool) // -> false;

17.reduce();

數(shù)組的第一項(xiàng)開(kāi)始症杏,逐個(gè)遍歷到最后,迭代數(shù)組的所有項(xiàng)瑞信,然后構(gòu)建一個(gè)最終返回的值厉颤。

// 注意: 參數(shù):reduce()接收一個(gè)或兩個(gè)參數(shù):第一個(gè)是回調(diào)函數(shù),表示在數(shù)組的每一項(xiàng)上調(diào)用的函數(shù)凡简;第二個(gè)參數(shù)(可選的)作為歸并的初始值走芋,被回調(diào)函數(shù)第一次執(zhí)行時(shí)的第一個(gè)參數(shù)接收绩郎。 reduce(callback,initial);callback默認(rèn)有四個(gè)參數(shù),分別為prev翁逞,now,index溉仑,self挖函。 callback返回的任何值都會(huì)作為下一次執(zhí)行的第一個(gè)參數(shù)。 如果initial參數(shù)被省略浊竟,那么第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上怨喘,因此callback的第一個(gè)參數(shù)是數(shù)組的第一項(xiàng),第二個(gè)參數(shù)就是數(shù)組的第二項(xiàng)振定。

let arr = [10,20,30,40,50];
let sum = arr.reduce((prev,now) => prev+now)

console.log(sum); // -> 150;

let sum = arr.reduce((prev,now) => prev+now,110)

console.log(sum) // -> 260;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末必怜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子后频,更是在濱河造成了極大的恐慌梳庆,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卑惜,死亡現(xiàn)場(chǎng)離奇詭異膏执,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)露久,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)更米,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人毫痕,你說(shuō)我怎么就攤上這事征峦。” “怎么了消请?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵栏笆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我梯啤,道長(zhǎng)竖伯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任因宇,我火速辦了婚禮七婴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘察滑。我一直安慰自己打厘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布贺辰。 她就那樣靜靜地躺著户盯,像睡著了一般嵌施。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莽鸭,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天吗伤,我揣著相機(jī)與錄音,去河邊找鬼硫眨。 笑死足淆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的礁阁。 我是一名探鬼主播巧号,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼姥闭!你這毒婦竟也來(lái)了丹鸿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤棚品,失蹤者是張志新(化名)和其女友劉穎靠欢,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體南片,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掺涛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疼进。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薪缆。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖伞广,靈堂內(nèi)的尸體忽然破棺而出拣帽,到底是詐尸還是另有隱情,我是刑警寧澤嚼锄,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布减拭,位于F島的核電站,受9級(jí)特大地震影響区丑,放射性物質(zhì)發(fā)生泄漏拧粪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一沧侥、第九天 我趴在偏房一處隱蔽的房頂上張望可霎。 院中可真熱鬧,春花似錦宴杀、人聲如沸癣朗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)旷余。三九已至绢记,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間正卧,已是汗流浹背蠢熄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留穗酥,地道東北人护赊。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像砾跃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子节吮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • 經(jīng)常我們?cè)谧鲰?xiàng)目的時(shí)候抽高,難免會(huì)對(duì)數(shù)組進(jìn)行一些增刪改查的操作,數(shù)組中一些常用的操作有哪些呢透绩?下面這篇博客是對(duì)...
    rebirth重生A閱讀 613評(píng)論 0 7
  • 前言 最近工作的時(shí)候總是記不住數(shù)組翘骂,對(duì)象,字符串的方法帚豪,寫(xiě)一篇方法總結(jié)好好的鞏固一下碳竟,以后也好復(fù)習(xí)。 數(shù)組的定義 ...
    小q閱讀 208評(píng)論 0 1
  • [1狸臣、 join()](javascript:;) [2莹桅、 reverse()](javascript:;) [3...
    慢性流浪_617d閱讀 320評(píng)論 0 0
  • 一、基本使用1烛亦、數(shù)組的創(chuàng)建(1) 通過(guò)[] (2) 通過(guò)創(chuàng)建構(gòu)造函數(shù) Array的實(shí)例 需要注意的是诈泼,如果構(gòu)造函數(shù)...
    一顆冰淇淋閱讀 300評(píng)論 0 0
  • 1.創(chuàng)建數(shù)組 2.通過(guò)索引訪問(wèn)元素 3.遍歷數(shù)組 4.push() 添加元素到數(shù)組末尾 5.pop() 刪除數(shù)組末...
    _janeplus閱讀 401評(píng)論 0 0