JS 中 數(shù)組的常用操作

遍歷數(shù)組

?? ? map?

? ??????map方法的作用在于處理?流式數(shù)據(jù),比如數(shù)組。

????????map() 方法??返回一個(gè)新數(shù)組,數(shù)組中的元素為原始數(shù)組元素 調(diào)用函數(shù) 處理后的值。

? ??????map( ) 不會(huì)改變?cè)紨?shù)組!?。。?!

? ??????array.map(function(currentValue,index,arr), thisValue)

? ??????currentValue?必須。當(dāng)前元素的值

? ??????index可選。當(dāng)前元素的索引值

? ??????arr可選。當(dāng)前元素屬于的數(shù)組對(duì)象

? ??????thisValue?可選。對(duì)象作為該執(zhí)行回調(diào)時(shí)使用,傳遞給函數(shù),用作 "this" 的值。

????????如果省略了 thisValue ,"this" 的值為 "undefined"

? ? ? ? 注意:map 方法 回調(diào)函數(shù)需要 return?。。?!否則就是 undefined;

?? ??????????????????map() 不會(huì)對(duì)空數(shù)組進(jìn)行檢測(cè)

?????????????????????map() 不會(huì)改變?cè)紨?shù)組

map?

? ? ?reduce?

? ??????reduce() 方法對(duì)累加器和數(shù)組中的每個(gè)元素(從左到右)應(yīng)用一個(gè)函數(shù),最終合并為一個(gè)值。

? ??????array.reduce(function(total, currentValue, currentIndex, arr), initialValue)

? ??????????total?必需。初始值, 或者計(jì)算結(jié)束后的返回值。

? ??????????currentValue?必需。當(dāng)前元素

? ??????????currentIndex?可選。當(dāng)前元素的索引

? ??????????arr??可選。當(dāng)前元素所屬的數(shù)組對(duì)象。

? ??????????initialValue?可選。傳遞給函數(shù)的初始值

??reduce?

??? ?? ??filter

? ??????filter方法可以篩除數(shù)組和類(lèi)似結(jié)構(gòu)中不滿足條件的元素,并?返回 滿足條件 的元素組成的數(shù)組。

????????filter() 方法創(chuàng)建一個(gè) 新的數(shù)組,新數(shù)組中的元素是通過(guò)檢查指定數(shù)組中符合條件的所有元素。

? ??????array.filter(function(currentValue,index,arr), thisValue)

? ??????參數(shù)

? ??????????currentValue?必須。當(dāng)前元素的值

? ??????????index可選。當(dāng)前元素的索引值

? ??????????arr可選。當(dāng)前元素屬于的數(shù)組對(duì)象

? ??????????thisValue可選。對(duì)象作為該執(zhí)行回調(diào)時(shí)使用,傳遞給函數(shù),用作 "this" 的值。

????????????如果省略了 thisValue ,"this" 的值為 "undefined"

??filter

? ??? ??forEach

? ??? ??? ??forEach() 方法用于調(diào)用數(shù)組的每個(gè)元素,并將元素傳遞給回調(diào)函數(shù)。

? ??????????array.forEach(function(currentValue, index, arr), thisValue)

? ??????????function(currentValue, index, arr)必需。 數(shù)組中每個(gè)元素需要調(diào)用的函數(shù)。

? ??????????currentValue必需。當(dāng)前元素

? ??????????index可選。當(dāng)前元素的索引值。

? ??????????arr可選。當(dāng)前元素所屬的數(shù)組對(duì)象。

? ??????????thisValue可選。傳遞給函數(shù)的值一般用 "this" 值。

????????????如果這個(gè)參數(shù)為空, "undefined" 會(huì)傳遞給 "this" 值

? ??? ??????注意:無(wú)法中途退出循環(huán),只能用return退出本次回調(diào),進(jìn)行下一次回調(diào)。

????????????????它總是返回 undefined值,即使你return了一個(gè)值。

forEach的最后一個(gè)參數(shù)

? ? ? ? every

? ?????????用于檢測(cè)數(shù)組所有元素是否都符合指定條件(通過(guò)函數(shù)提供)。

? ??????????every() 方法使用指定函數(shù)檢測(cè)數(shù)組中的所有元素:

????????????如果數(shù)組中檢測(cè)到有一個(gè)元素不滿足,則整個(gè)表達(dá)式返回?false?,且剩余的元素不會(huì)再進(jìn)行檢測(cè)。

????????????如果所有元素都滿足條件,則返回 true。

? ??????????array.every(function(currentValue,index,arr), thisValue),參數(shù)跟forEach一樣。

? ? ? ??? ??返回值是布爾類(lèi)型

? ? ? ??? ??注意:如果數(shù)組中檢測(cè)到有一個(gè)元素不滿足,則整個(gè)表達(dá)式返回 false,且剩余的元素不會(huì)再進(jìn)行檢測(cè)。

? ? ? ??? ??如果所有元素都滿足條件,則返回 true。

every

? ??????some?

? ??????????some() 方法用于檢測(cè)數(shù)組中的元素是否滿足指定條件(函數(shù)提供)。

? ??????????some() 方法會(huì)依次執(zhí)行數(shù)組的每個(gè)元素:

????????????如果有一個(gè)元素滿足條件,則表達(dá)式返回true?, 剩余的元素不會(huì)再執(zhí)行檢測(cè)。

????????????如果沒(méi)有滿足條件的元素,則返回false。

? ??????????array.some(function(currentValue,index,arr),thisValue)

some??

查詢(xún)數(shù)組中元素

?????includes

? ??????arr.includes(searchElement)

????????arr.includes(searchElement, fromIndex)

? ??????includes() 方法用來(lái)判斷一個(gè)數(shù)組是否包含一個(gè)指定的值,如果是返回 true,否則false。

? ??????searchElement必須。需要查找的元素值。

? ??????fromIndex可選。從該索引處開(kāi)始查找 searchElement。如果為負(fù)值,則按升序從 array.length + fromIndex 的索引開(kāi)始搜索。默認(rèn)為 0。

includes

? ? ?find

? ??????array.find(function(currentValue, index, arr),thisValue)

? ??????find() 方法為數(shù)組中的?每個(gè)元素?都調(diào)用一次函數(shù)執(zhí)行,

? ? ? ? 返回值:find 返回?數(shù)組或類(lèi)似結(jié)構(gòu)中滿足條件的?第一個(gè)元素

? ??????????currentValue?必需。當(dāng)前元素

? ??????????index可選。當(dāng)前元素的索引值

? ??????????arr可選。當(dāng)前元素所屬的數(shù)組對(duì)象

? ??????????thisValue可選。 傳遞給函數(shù)的值一般用 "this" 值。

????????????如果這個(gè)參數(shù)為空, "undefined" 會(huì)傳遞給 "this" 值

? ??????當(dāng)數(shù)組中的元素在測(cè)試條件時(shí)返回?true?時(shí), find() 返回符合條件的元素,之后的值不會(huì)再調(diào)用執(zhí)行函數(shù),如果沒(méi)有符合條件的元素返回 undefined。

find

? ? ????findIndex

? ??????????findIndex() 方法返回傳入一個(gè)測(cè)試條件(函數(shù))符合條件的數(shù)組第一個(gè)元素位置。

????????????findIndex() 方法為數(shù)組中的每個(gè)元素都調(diào)用一次函數(shù)執(zhí)行:

? ? ? ? ? ? 當(dāng)數(shù)組中的元素在測(cè)試條件時(shí)返回?true?時(shí), findIndex() 返回符合條件的元素的索引位置,之后的值不會(huì)再調(diào)用執(zhí)行函數(shù)。

????????????如果沒(méi)有符合條件的元素返回 -1

? ? ? ? ? ? 和 find 基本一樣,就是 find 是返回 符合條件的元素,findIndex 是返回下標(biāo)

findIndex

? ? ? ? indexOf

? ??????????array.indexOf(searchvalue,start)

? ? ? ??????該方法將從頭到尾地檢索數(shù)組,看它是否含有對(duì)應(yīng)的元素。開(kāi)始檢索的位置在數(shù)組 start 處或數(shù)組的開(kāi)頭(沒(méi)有指定 start 參數(shù)時(shí))。如果找到一個(gè) item,則返回 item 的第一次出現(xiàn)的位置。開(kāi)始位置的索引為 0。

? ??????????注意:?indexOf() 方法區(qū)分大小寫(xiě)。

? ? ? ??? ??返回值:返回?cái)?shù)組中首次出現(xiàn)某個(gè)指定的元素位置,也就是下標(biāo)。

? ? ? ??? ??注意:indexOf()不能識(shí)別NaN

? ??????????searchvalue必需。規(guī)定需檢索的字符串值。

? ??????????start可選的整數(shù)參數(shù)。規(guī)定在字符串中開(kāi)始檢索的位置。它的合法取值是 0 到 string Object.length - 1。如省略該參數(shù),則將從字符串的首字符開(kāi)始檢索。

indexOf

增加刪減方法

?????????擴(kuò)展預(yù)算符? ...

?擴(kuò)展預(yù)算符? ...

push??改變?cè)瓉?lái)的數(shù)組

? ??????array.push(item1,?item2, ...,?itemX)

? ??????向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并 返回新的長(zhǎng)度。

push??

unshift?改變?cè)瓉?lái)的數(shù)組

? ??????array.unshift(item1,item2, ...,?itemX)

? ??????向數(shù)組的開(kāi)頭添加一個(gè)或更多元素,并返回新的長(zhǎng)度。

unshift

concat 不改變?cè)瓉?lái)的數(shù)組

? ??????array.concat(array2,array3,...,arrayX)

? ??????concat() 方法用于連接兩個(gè)或多個(gè)數(shù)組。該方法不會(huì)改變現(xiàn)有的數(shù)組,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本。

? ???????返回值:返回一個(gè)新的數(shù)組。

concat?

splice? 改變?cè)瓉?lái)的數(shù)組

? ??????array.splice(index,howmany,item1,.....,itemX)

? ??????splice() 添加/刪除數(shù)組元素

? ? ? ?返回值:如果從 array 中刪除了元素,則返回的是 刪除后 的數(shù)組。

? ??? ? 注意:添加是在開(kāi)始的元素前面添加的?。。?/b>

? ??????????index必需。規(guī)定從何處添加/刪除元素。

????????????該參數(shù)是開(kāi)始插入和(或)刪除的數(shù)組元素的下標(biāo),必須是數(shù)字。

? ??????????howmany必需。規(guī)定應(yīng)該刪除多少元素。必須是數(shù)字,但可以是 "0"。

????????????如果未規(guī)定此參數(shù),則刪除從 index 開(kāi)始到原數(shù)組結(jié)尾的所有元素。

? ??????????item1, ...,?itemX可選。要添加到數(shù)組的新元素

splice??

? ? ? ? slice?不改變?cè)瓟?shù)組

? ??????????array.slice(start,end)

? ??????????? ?返回值:返回一個(gè)新的數(shù)組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。

? ??????????start必需。規(guī)定從何處開(kāi)始選取。如果是負(fù)數(shù),那么它規(guī)定從數(shù)組尾部開(kāi)始算起的位置。也就是說(shuō),-1 指最后一個(gè)元素,-2 指倒數(shù)第二個(gè)元素,以此類(lèi)推。

????????????end可選。規(guī)定從何處結(jié)束選取。該參數(shù)是數(shù)組片斷結(jié)束處的數(shù)組下標(biāo)。如果沒(méi)有指定該參數(shù),那么切分的數(shù)組包含從 start 到數(shù)組結(jié)束的所有元素。如果這個(gè)參數(shù)是負(fù)數(shù),那么它規(guī)定的是從數(shù)組尾部開(kāi)始算起的元素。

slice?

????pop?改變?cè)瓉?lái)的數(shù)組

? ??????array.pop()

? ? ? ?pop() 方法刪除一個(gè)數(shù)組中的 最后的一個(gè)元素,并且?返回這個(gè)元素

? ??????返回值?是? 刪除的這個(gè)元素!!!!

pop?

????shift?改變?cè)瓉?lái)的數(shù)組

? ??????array.shift()

? ??????shift()方法刪除數(shù)組的?第一個(gè)元素,并 返回這個(gè)元素

? ??????返回值??是??刪除的這個(gè)元素?。。?!

shift?

? ? ?copyWithin?改變?cè)瓉?lái)的數(shù)組

? ??????array.copyWithin(target, start, end)

? ????????用于從數(shù)組的指定位置拷貝元素到數(shù)組的另一個(gè)指定位置中。

? ??????????target必需。復(fù)制到指定目標(biāo)索引位置。

? ??????????start可選。元素復(fù)制的起始位置。

? ??????????end可選。停止復(fù)制的索引位置 (默認(rèn)為?array.length)。如果為負(fù)值,表示倒數(shù)。

copyWithin?

? ? fill?改變?cè)瓉?lái)的數(shù)組

? ??????array.fill(value, start, end)

? ??????用于將一個(gè)固定值替換數(shù)組的元素。

? ??????value必需。填充的值。

? ??????start可選。開(kāi)始填充位置,默認(rèn)為0

? ??????end可選。停止填充位置 (默認(rèn)為?array.length)

fill?

轉(zhuǎn)換方法

? ??join

? ??????array.join(separator)

? ??????join() 方法用于把數(shù)組中的所有元素通過(guò)指定的分隔符進(jìn)行分隔放入一個(gè)字符串,返回生成的字符串。

? ??????separator可選。指定要使用的分隔符。如果省略該參數(shù),則使用逗號(hào)作為分隔符。

join

? ??split(字符串轉(zhuǎn)數(shù)組)

? ?string.split(separator,limit)

????用于把一個(gè)字符串分割成字符串?dāng)?shù)組

? ??separator可選。字符串或正則表達(dá)式,從該參數(shù)指定的地方分割 string Object。

? ??limit可選。該參數(shù)可指定返回的數(shù)組的最大長(zhǎng)度。如果設(shè)置了該參數(shù),返回的子串不會(huì)多于這個(gè)參數(shù)指定的數(shù)組。如果沒(méi)有設(shè)置該參數(shù),整個(gè)字符串都會(huì)被分割,不考慮它的長(zhǎng)度。

? ? 注意:?如果把空字符串 ("") 用作 separator,那么 stringObject 中的每個(gè)字符之間都會(huì)被分割。

split

?Array.of( )?

? ??將一組值轉(zhuǎn)換為數(shù)組

?Array.of

Array.from( )?

?? ??Array.from方法用于將?兩類(lèi)對(duì)象?轉(zhuǎn)為?真正的數(shù)組:類(lèi)似數(shù)組的對(duì)象(array-like object)和可遍歷(iterable)的對(duì)象(包括 ES6 新增的數(shù)據(jù)結(jié)構(gòu) Set 和 Map).

Array.from( )?

? ??toLocaleString

? ??????數(shù)組轉(zhuǎn)字符串

????????返回一個(gè)表示數(shù)組元素的字符串。該字符串由數(shù)組中的每個(gè)元素的 toLocaleString() 返回值經(jīng)調(diào)用 join() 方法連接(由逗號(hào)隔開(kāi))組成。

toLocaleString

排序方法

????reverse??改變?cè)瓉?lái)的數(shù)組

? ??????顛倒數(shù)組中元素的順序。

? ??????array.reverse()

reverse??

????sort? 改變?cè)瓉?lái)的數(shù)組

? ??????對(duì)數(shù)組的元素進(jìn)行排序。

? ??????array.sort(sortfunction)

sort??

數(shù)組實(shí)例的 entries(),keys() 和 values()?

? ??返回一個(gè)遍歷器對(duì)象,可以用for...of循環(huán)進(jìn)行遍歷

? ??keys()是對(duì)鍵名的遍歷、values()是對(duì)鍵值的遍歷,entries()是對(duì)鍵值對(duì)的遍歷。

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