Javascript之Array對(duì)象

The JavaScript?Array?object is a global object that?is used in the?construction?of?arrays; which are high-level, list-like objects.

先看看Array的prototype的結(jié)構(gòu):

Array的prototype的結(jié)構(gòu)

0.length屬性

length?是Array的實(shí)例屬性。返回或設(shè)置一個(gè)數(shù)組中的元素個(gè)數(shù)怎憋。該值是一個(gè)無(wú)符號(hào) 32-bit 整數(shù)写半,并且總是大于數(shù)組最高項(xiàng)的下標(biāo)岸蜗。

注意:length屬性是可以手動(dòng)修改的,而且通過(guò)下標(biāo)賦值時(shí)自動(dòng)更新length的值叠蝇;

手動(dòng)修改length
length自動(dòng)更新為大于數(shù)組最大項(xiàng)的下標(biāo)

1.concat

concat()?方法用于合并兩個(gè)或多個(gè)數(shù)組璃岳。此方法不會(huì)更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(shù)組。


將數(shù)組和/或值連接成新數(shù)組

2.constructor

3.copyWithin

Syntax:

arr.copyWithin(target)

arr.copyWithin(target,start)

arr.copyWithin(target,start,end)

Parameters:

target

Zero based index at which to copy the sequence to. If negative,?target?will be counted from the end.

If?target?is at or greater than?arr.length, nothing will be copied. If?target?is positioned after?start, the copied sequence will be trimmed to fit?arr.length.

start?Optional

Zero based index at which to start copying elements from. If negative,?start?will be counted from the end.

If?start?is omitted,?copyWithin?will copy from the start (defaults to 0).

end?Optional

Zero based index at which to end copying elements from.?copyWithin?copies up to but not including?end. If negative,?end?will be counted from the end.

If?end?is omitted,?copyWithin?will copy until the end (default to?arr.length).

Return value

The modified array.

詳述

The?copyWithin?works like C and C++'s?memmove, and is a high-performance method to shift the data of an?Array. This especially applies to the?TypedArray?method of the same name. The sequence is copied and pasted as one operation; pasted sequence will have the copied values even when the copy and paste region overlap.

The?copyWithin?function is intentionally?generic, it does not require that its this value be an?Array?object.

The?copyWithin?method is a mutable method. It does not alter the length of?this, but will change its content and create new properties if necessary.

總結(jié):

#1.target參數(shù)是必須的矾睦,也就是說(shuō)copyWithin方法至少需要一個(gè)參數(shù)晦款,否則該方法無(wú)效

缺少必要的參數(shù)

#2.target參數(shù)可以為負(fù)數(shù),此時(shí)從末尾開始計(jì)算


target為負(fù)數(shù)

#3.start參數(shù)默認(rèn)是0枚冗,當(dāng)為負(fù)數(shù)時(shí)從末尾開始計(jì)算

#4.end參數(shù)默認(rèn)是數(shù)組的長(zhǎng)度缓溅,當(dāng)為負(fù)數(shù)時(shí)從末尾開始計(jì)算

end參數(shù)使用默認(rèn)值

4.entries

entries()?方法返回一個(gè)新的Array Iterator對(duì)象,該對(duì)象包含數(shù)組中每個(gè)索引的鍵/值對(duì)赁温。該方法返回一個(gè)新的?Array?迭代器對(duì)象坛怪。Array Iterator是對(duì)象,它的原型(__proto__:Array Iterator)上有一個(gè)next方法股囊,可用用于遍歷迭代器取得原數(shù)組的[key,value]袜匿。

使用entries獲取迭代器來(lái)遍歷數(shù)組

5.every:

every()?方法測(cè)試數(shù)組的所有元素是否都通過(guò)了指定函數(shù)的測(cè)試。

語(yǔ)法:

arr.every(callback[, thisArgs])

參數(shù)

callback

用來(lái)測(cè)試每個(gè)元素的函數(shù)稚疹。

thisArg

執(zhí)行?callback?時(shí)使用的this值居灯。

說(shuō)明

every?方法為數(shù)組中的每個(gè)元素執(zhí)行一次callback?函數(shù),直到它找到一個(gè)使callback?返回false(表示可轉(zhuǎn)換為布爾值 false 的值)的元素内狗。如果發(fā)現(xiàn)了一個(gè)這樣的元素怪嫌,every?方法將會(huì)立即返回false。否則柳沙,callback?為每一個(gè)元素返回?true岩灭,every就會(huì)返回true。callback?只會(huì)為那些已經(jīng)被賦值的索引調(diào)用赂鲤。不會(huì)為那些被刪除或從來(lái)沒被賦值的索引調(diào)用噪径。

callback?被調(diào)用時(shí)傳入三個(gè)參數(shù):元素值,元素的索引数初,原數(shù)組找爱。

如果為?every?提供一個(gè)thisArg參數(shù),則該參數(shù)為調(diào)用?callback?時(shí)的?this?值妙真。如果省略該參數(shù)缴允,則?callback?被調(diào)用時(shí)的?this?值,在非嚴(yán)格模式下為全局對(duì)象珍德,在嚴(yán)格模式下傳入?undefined练般。

every?不會(huì)改變?cè)瓟?shù)組。

every遍歷的元素范圍在第一次調(diào)用?callback?之前就已確定了锈候。在調(diào)用?every?之后添加到數(shù)組中的元素不會(huì)被?callback?訪問(wèn)到薄料。如果數(shù)組中存在的元素被更改,則他們傳入?callback的值是?every?訪問(wèn)到他們那一刻的值泵琳。那些被刪除的元素或從來(lái)未被賦值的元素將不會(huì)被訪問(wèn)到摄职。

every和數(shù)學(xué)中的"所有"類似誊役,當(dāng)所有的元素都符合條件才返回true。另外谷市,空數(shù)組也是返回true蛔垢。(空數(shù)組中所有元素都符合給定的條件,注:因?yàn)榭諗?shù)組沒有元素)迫悠。

測(cè)試數(shù)組中的值

6.fill:

fill方法用一個(gè)固定值填充一個(gè)數(shù)組中從起始索引到終止索引內(nèi)的全部元素鹏漆。

語(yǔ)法:

arr.fill(value[, start[, end]])

描述:

具體要填充的元素區(qū)間是 [start,?end) , 一個(gè)半開半閉區(qū)間.

fill?方法接受三個(gè)參數(shù)value,?start?以及?end.start?和?end?參數(shù)是可選的, 其默認(rèn)值分別為0和?this?對(duì)象的length 屬性值.

如果start是個(gè)負(fù)數(shù), 則開始索引會(huì)被自動(dòng)計(jì)算成為length+start, 其中l(wèi)ength是this?對(duì)象的?length 屬性值. 如果?end?是個(gè)負(fù)數(shù), 則結(jié)束索引會(huì)被自動(dòng)計(jì)算成為?length+end.

fill方法故意被設(shè)計(jì)成通用方法, 該方法不要求?this?是數(shù)組對(duì)象.

fill方法是個(gè)可變方法, 它會(huì)改變調(diào)用它的?this?對(duì)象本身, 然后返回它, 而并不是返回一個(gè)副本.

當(dāng)一個(gè)對(duì)象被傳遞給 fill 方法的時(shí)候, 填充數(shù)組的是這個(gè)對(duì)象的引用.

使用fill填充數(shù)組

7.filter:

filter()?方法創(chuàng)建一個(gè)新數(shù)組, 其包含通過(guò)所提供函數(shù)實(shí)現(xiàn)的測(cè)試的所有元素。

語(yǔ)法:

var new_array = arr.filter(callback[, thisArg])

參數(shù):

callback

用來(lái)測(cè)試數(shù)組的每個(gè)元素的函數(shù)创泄。調(diào)用時(shí)使用參數(shù)?(element, index, array)艺玲。

返回true表示保留該元素(通過(guò)測(cè)試),false則不保留鞠抑。

thisArg

可選饭聚。執(zhí)行?callback?時(shí)的用于this的值。

使用filter過(guò)濾數(shù)組

8.find:

find()?方法返回?cái)?shù)組中滿足提供的測(cè)試函數(shù)的第一個(gè)元素的值搁拙。否則返回?undefined秒梳。

find方法的語(yǔ)法和filter類似。

find 方法對(duì)數(shù)組中的每一項(xiàng)元素執(zhí)行一次callback?函數(shù)箕速,直至有一個(gè)?callback 返回?true端幼。當(dāng)找到了這樣一個(gè)元素后,該方法會(huì)立即返回這個(gè)元素的值弧满,否則返回?undefined。注意?callback?函數(shù)會(huì)為數(shù)組中的每個(gè)索引調(diào)用即從?0?到?length - 1此熬,而不僅僅是那些被賦值的索引庭呜,這意味著對(duì)于稀疏數(shù)組來(lái)說(shuō),該方法的效率要低于那些只遍歷有值的索引的方法犀忱。

callback 函數(shù)帶有3個(gè)參數(shù):當(dāng)前元素的值募谎、當(dāng)前元素的索引,以及數(shù)組本身阴汇。

如果提供了 thisArg 參數(shù)数冬,那么它將作為每次 callback 函數(shù)執(zhí)行時(shí)的上下文對(duì)象,否則上下文對(duì)象為?undefined搀庶。

find 方法不會(huì)改變數(shù)組拐纱。

在第一次調(diào)用?callback?函數(shù)時(shí)會(huì)確定元素的索引范圍,因此在?find?方法開始執(zhí)行之后添加到數(shù)組的新元素將不會(huì)被 callback 函數(shù)訪問(wèn)到哥倔。如果數(shù)組中一個(gè)尚未被callback函數(shù)訪問(wèn)到的元素的值被callback函數(shù)所改變秸架,那么當(dāng)callback函數(shù)訪問(wèn)到它時(shí),它的值是將是根據(jù)它在數(shù)組中的索引所訪問(wèn)到的當(dāng)前值咆蒿。被刪除的元素仍舊會(huì)被訪問(wèn)到东抹。

使用find方法查找數(shù)組中的元素

9.findIndex:

findIndex()方法返回?cái)?shù)組中滿足提供的測(cè)試函數(shù)的第一個(gè)元素的索引蚂子。否則返回-1。

與find的方法用法相同缭黔。

使用findIndex查找數(shù)組中滿足條件的元素的下標(biāo)

10.forEach:

forEach()?方法對(duì)數(shù)組的每個(gè)元素執(zhí)行一次提供的函數(shù)食茎。

forEach?方法按升序?yàn)閿?shù)組中含有效值的每一項(xiàng)執(zhí)行一次callback函數(shù),那些已刪除(使用delete方法等情況)或者未初始化的項(xiàng)將被跳過(guò)(但不包括那些值為?undefined 的項(xiàng))(例如在稀疏數(shù)組上)。

callback?函數(shù)會(huì)被依次傳入三個(gè)參數(shù):

數(shù)組當(dāng)前項(xiàng)的值

數(shù)組當(dāng)前項(xiàng)的索引

數(shù)組對(duì)象本身

如果給forEach傳遞了thisArg參數(shù),當(dāng)調(diào)用時(shí)晴玖,它將被傳給callback?函數(shù)孔飒,作為它的this值。否則砍艾,將會(huì)傳入?undefined?作為它的this值。callback函數(shù)最終可觀察到this值,這取決于?函數(shù)觀察到this的常用規(guī)則抄伍。

forEach遍歷的范圍在第一次調(diào)用callback前就會(huì)確定。調(diào)用forEach后添加到數(shù)組中的項(xiàng)不會(huì)被callback訪問(wèn)到管宵。如果已經(jīng)存在的值被改變截珍,則傳遞給callback?的值是forEach遍歷到他們那一刻的值。已刪除的項(xiàng)不會(huì)被遍歷到箩朴。如果已訪問(wèn)的元素在迭代時(shí)被刪除了(例如使用?shift()) 岗喉,之后的元素將被跳過(guò) - 參見下面的示例。

forEach()?為每個(gè)數(shù)組元素執(zhí)行callback函數(shù)炸庞;不像map()?或者reduce()?钱床,它總是返回?undefined值,并且不可鏈?zhǔn)秸{(diào)用埠居。典型用例是在一個(gè)鏈的最后執(zhí)行副作用查牌。

注意:forEach() 沒有返回值,無(wú)法中止滥壕。

使用forEach函數(shù)實(shí)現(xiàn)對(duì)象復(fù)制

11.includes:

includes()?方法用來(lái)判斷一個(gè)數(shù)組是否包含一個(gè)指定的值纸颜,根據(jù)情況,如果包含則返回 true绎橘,否則返回false胁孙。

語(yǔ)法:

arr.includes(searchElement[, fromIndex])

fromIndex,?從該索引處開始查找?searchElement。如果為負(fù)值称鳞,則按升序從 array.length + fromIndex 的索引開始搜索涮较。如果值不在有效范圍內(nèi),默認(rèn)為 0冈止。

12.indexOf:

indexOf()方法返回在數(shù)組中可以找到一個(gè)給定元素的第一個(gè)索引法希,如果不存在,則返回-1靶瘸。

語(yǔ)法:

arr.indexOf(searchElement[, fromIndex=0])

開始查找的位置苫亦。如果該索引值大于或等于數(shù)組長(zhǎng)度毛肋,意味著不會(huì)在數(shù)組里查找,返回-1屋剑。如果參數(shù)中提供的索引值是一個(gè)負(fù)值润匙,則將其作為數(shù)組末尾的一個(gè)抵消,即-1表示從最后一個(gè)元素開始查找唉匾,-2表示從倒數(shù)第二個(gè)元素開始查找 孕讳,以此類推。 注意:如果參數(shù)中提供的索引值是一個(gè)負(fù)值巍膘,并不改變其查找順序厂财,查找順序仍然是從前向后查詢數(shù)組。如果抵消后的索引值仍小于0峡懈,則整個(gè)數(shù)組都將會(huì)被查詢璃饱。其默認(rèn)值為0.join:??join()

13.join:

join()?方法將一個(gè)數(shù)組(或一個(gè)類數(shù)組對(duì)象)的所有元素連接成一個(gè)字符串并返回這個(gè)字符串。

語(yǔ)法:

str = arr.join(separator)

separator,指定一個(gè)字符串來(lái)分隔數(shù)組的每個(gè)元素肪康。如果需要(separator)荚恶,將分隔符轉(zhuǎn)換為字符串。如果省略()磷支,數(shù)組元素用逗號(hào)分隔谒撼。默認(rèn)為 ","。如果separator是空字符串("")雾狈,則所有元素之間都沒有任何字符廓潜。返回值:一個(gè)所有數(shù)組元素連接的字符串。如果?arr.length?為0善榛,則返回空字符串茉帅。

說(shuō)明:所有的數(shù)組元素被轉(zhuǎn)換成字符串,再用一個(gè)分隔符將這些字符串連接起來(lái)锭弊。如果元素是undefined 或者null, 則會(huì)轉(zhuǎn)化成空字符串擂错。

14.keys:

keys()?方法返回一個(gè)新的Array迭代器味滞,它包含數(shù)組中每個(gè)索引的鍵。

使用keys()函數(shù)獲取迭代器來(lái)遍歷數(shù)組
索引迭代器會(huì)包含那些沒有對(duì)應(yīng)元素的索引

15.lastIndexOf:

lastIndexOf()?方法返回指定元素(也即有效的 JavaScript 值或變量)在數(shù)組中的最后一個(gè)的索引钮呀,如果不存在則返回 -1剑鞍。從數(shù)組的后面向前查找,從?fromIndex?處開始爽醋。

語(yǔ)法:

arr.lastIndexOf(searchElement[, fromIndex = arr.length - 1])

從此位置開始逆向查找蚁署。默認(rèn)為數(shù)組的長(zhǎng)度減 1,即整個(gè)數(shù)組都被查找蚂四。如果該值大于或等于數(shù)組的長(zhǎng)度光戈,則整個(gè)數(shù)組會(huì)被查找哪痰。如果為負(fù)值,將其視為從數(shù)組末尾向前的偏移久妆。即使該值為負(fù)晌杰,數(shù)組仍然會(huì)被從后向前查找。如果該值為負(fù)時(shí)筷弦,其絕對(duì)值大于數(shù)組長(zhǎng)度肋演,則方法返回 -1,即數(shù)組不會(huì)被查找烂琴。

使用?lastIndexOf?定位數(shù)組中的值

16.map:

map()?方法創(chuàng)建一個(gè)新數(shù)組爹殊,其結(jié)果是該數(shù)組中的每個(gè)元素都調(diào)用一個(gè)提供的函數(shù)后返回的結(jié)果。

map?方法會(huì)給原數(shù)組中的每個(gè)元素都按順序調(diào)用一次callback?函數(shù)奸绷。callback?每次執(zhí)行后的返回值(包括?undefined)組合起來(lái)形成一個(gè)新數(shù)組梗夸。?callback函數(shù)只會(huì)在有值的索引上被調(diào)用;那些從來(lái)沒被賦過(guò)值或者使用?delete?刪除的索引則不會(huì)被調(diào)用健盒。

callback?函數(shù)會(huì)被自動(dòng)傳入三個(gè)參數(shù):數(shù)組元素绒瘦,元素索引,原數(shù)組本身扣癣。

如果thisArg參數(shù)有值惰帽,則每次callback函數(shù)被調(diào)用的時(shí)候,this?都會(huì)指向thisArg?參數(shù)上的這個(gè)對(duì)象父虑。如果省略了thisArg?參數(shù),或者賦值為 null?或?undefined该酗,則 this 指向全局對(duì)象 。

map?不修改調(diào)用它的原數(shù)組本身(當(dāng)然可以在?callback?執(zhí)行時(shí)改變?cè)瓟?shù)組)士嚎。

使用 map 方法處理數(shù)組時(shí)呜魄,數(shù)組元素的范圍是在 callback 方法第一次調(diào)用之前就已經(jīng)確定了。在 map 方法執(zhí)行的過(guò)程中:原數(shù)組中新增加的元素將不會(huì)被 callback 訪問(wèn)到莱衩;若已經(jīng)存在的元素被改變或刪除了爵嗅,則它們的傳遞到 callback 的值是 map 方法遍歷到它們的那一時(shí)刻的值;而被刪除的元素將不會(huì)被訪問(wèn)到笨蚁。

使用 map 方法獲取每個(gè)字符所對(duì)應(yīng)的 ASCII 碼組成的數(shù)組

17.pop:

pop()方法從數(shù)組中刪除最后一個(gè)元素睹晒,并返回該元素的。此方法更改數(shù)組的長(zhǎng)度括细。

pop方法有意具有通用性伪很。該方法和?call()?或?apply()?一起使用時(shí),可應(yīng)用在類似數(shù)組的對(duì)象上奋单。pop方法根據(jù)?length屬性來(lái)確定最后一個(gè)元素的位置锉试。如果不包含length屬性或length屬性不能被轉(zhuǎn)成一個(gè)數(shù)值,會(huì)將length置為0览濒,并返回undefined呆盖。

空數(shù)組上調(diào)用 pop()拖云,返回 ?undefined

18.push:

push()?方法將一個(gè)或多個(gè)元素添加到數(shù)組的末尾,并返回新數(shù)組的長(zhǎng)度絮短。

語(yǔ)法:

arr.push(element1,...,elementN)

返回值:當(dāng)調(diào)用該方法時(shí)江兢,新的?length?屬性值將被作為返回值返回。

push方法有意具有通用性丁频。該方法和?call()?或?apply()?一起使用時(shí)杉允,可應(yīng)用在類似數(shù)組的對(duì)象上。push方法根據(jù)length屬性來(lái)決定從哪里開始插入給定的值席里。如果length不能被轉(zhuǎn)成一個(gè)數(shù)值叔磷,則插入的元素索引為 0,包括length不存在時(shí)奖磁。當(dāng)?length?不存在時(shí)改基,將會(huì)創(chuàng)建它。

唯一的原生類數(shù)組(array-like)對(duì)象是?Strings咖为,盡管如此秕狰,它們并不適用該方法,因?yàn)樽址遣豢筛淖兊摹?/p>

push()函數(shù)返回?cái)?shù)組的長(zhǎng)度

19.reduce:

reduce()?方法對(duì)累加器和數(shù)組中的每個(gè)元素(從左到右)應(yīng)用一個(gè)函數(shù)躁染,將其減少為單個(gè)值鸣哀。

語(yǔ)法:

arr.reduce(callback[, initialValue])

callback

執(zhí)行數(shù)組中每個(gè)值的函數(shù),包含四個(gè)參數(shù):

accumulator

累加器累加回調(diào)的返回值; 它是上一次調(diào)用回調(diào)時(shí)返回的累積值吞彤,或initialValue(如下所示)我衬。

currentValue

數(shù)組中正在處理的元素。

currentIndex | 可選

數(shù)組中正在處理的當(dāng)前元素的索引饰恕。 如果提供了initialValue挠羔,則索引號(hào)為0,否則為索引為1埋嵌。

array | 可選

調(diào)用reduce的數(shù)組

initialValue | 可選

用作第一個(gè)調(diào)用callback的第一個(gè)參數(shù)的值破加。 如果沒有提供初始值,則將使用數(shù)組中的第一個(gè)元素雹嗦。 在沒有初始值的空數(shù)組上調(diào)用 reduce 將報(bào)錯(cuò)范舀。

注意:如果沒有提供initialValue,reduce 會(huì)從索引1的地方開始執(zhí)行 callback 方法俐银,跳過(guò)第一個(gè)索引。如果提供initialValue端仰,從索引0開始捶惜。

沒有提供initialValue,reduce函數(shù)調(diào)用2次callback
提供initialValue荔烧,reduce函數(shù)調(diào)用3次callback
提供initialValue=0吱七,把reduce函數(shù)作為求和器

20.reduceRight:

reduceRight()?方法接受一個(gè)函數(shù)作為累加器(accumulator)和數(shù)組的每個(gè)值(從右到左)將其減少為單個(gè)值汽久。

reduceRight?為數(shù)組中每個(gè)元素調(diào)用一次?callback?回調(diào)函數(shù),但是數(shù)組中被刪除的索引或從未被賦值的索引會(huì)跳過(guò)踊餐【按迹回調(diào)函數(shù)接受四個(gè)參數(shù):初始值(或上次調(diào)用回調(diào)的返回值)、當(dāng)前元素值吝岭、當(dāng)前索引三痰,以及調(diào)用?reduce?的數(shù)組。

首次調(diào)用回調(diào)函數(shù)時(shí)窜管,previousValue?和?currentValue可以是兩個(gè)值之一散劫。如果調(diào)用?reduceRight?時(shí)提供了initialValue參數(shù),則previousValue等于initialValue幕帆,currentValue等于數(shù)組中的最后一個(gè)值获搏。如果沒有提供initialValue參數(shù),則previousValue?等于數(shù)組最后一個(gè)值失乾,currentValue?等于數(shù)組中倒數(shù)第二個(gè)值常熙。

如果數(shù)組為空,且沒有提供initialValue?參數(shù)碱茁,將會(huì)拋出一個(gè)TypeError 錯(cuò)誤裸卫。如果數(shù)組只有一個(gè)元素且沒有提供initialValue?參數(shù),或者提供了initialValue?參數(shù)早芭,但是數(shù)組為空將會(huì)直接返回?cái)?shù)組中的那一個(gè)元素或?initialValue?參數(shù)彼城,而不會(huì)調(diào)用callback。

reduce和reduceRight的區(qū)別

21.reverse:

reverse()?方法將數(shù)組中元素的位置顛倒退个,并返回該數(shù)組的引用募壕。

利用reverse函數(shù)反轉(zhuǎn)字符串

22.shift:

shift()?方法從數(shù)組中刪除第一個(gè)元素,并返回該元素的值语盈。此方法更改數(shù)組的長(zhǎng)度舱馅。如果數(shù)組為空則返回undefined?。

shift?方法移除索引為 0 的元素(即第一個(gè)元素)刀荒,并返回被移除的元素代嗤,其他元素的索引值隨之減 1。如果?length?屬性的值為 0 (長(zhǎng)度為 0)缠借,則返回?undefined干毅。

shift?方法并不局限于數(shù)組:這個(gè)方法能夠通過(guò)call?或?apply方法作用于類似數(shù)組的對(duì)象上。但是對(duì)于沒有 length 屬性(從0開始的一系列連續(xù)的數(shù)字屬性的最后一個(gè))的對(duì)象泼返,調(diào)用該方法可能沒有任何意義硝逢。

shift函數(shù)刪除數(shù)組中第一個(gè)元素

23.slice:

slice()?方法返回一個(gè)從開始到結(jié)束(不包括結(jié)束)選擇的數(shù)組的一部分淺拷貝到一個(gè)新數(shù)組對(duì)象。且原始數(shù)組不會(huì)被修改。

語(yǔ)法:

arr.slice([begin[, end]])

begin | 可選

從該索引處開始提取原數(shù)組中的元素(從0開始)渠鸽。

如果該參數(shù)為負(fù)數(shù)叫乌,則表示從原數(shù)組中的倒數(shù)第幾個(gè)元素開始提取,slice(-2)表示提取原數(shù)組中的倒數(shù)第二個(gè)元素到最后一個(gè)元素(包含最后一個(gè)元素)徽缚。

如果省略?begin憨奸,則?slice?從索引 0 開始。

end | 可選

在該索引處結(jié)束提取原數(shù)組元素(從0開始)凿试。slice會(huì)提取原數(shù)組中索引從begin到end?的所有元素(包含begin排宰,但不包含end)。

slice(1,4)?提取原數(shù)組中的第二個(gè)元素開始直到第四個(gè)元素的所有元素 (索引為 1, 2, 3的元素)红省。

如果該參數(shù)為負(fù)數(shù)额各,則它表示在原數(shù)組中的倒數(shù)第幾個(gè)元素結(jié)束抽取。?slice(-2,-1)表示抽取了原數(shù)組中的倒數(shù)第二個(gè)元素到最后一個(gè)元素(不包含最后一個(gè)元素吧恃,也就是只有倒數(shù)第二個(gè)元素)虾啦。

如果end被省略,則slice會(huì)一直提取到原數(shù)組末尾痕寓。

如果?end 大于數(shù)組長(zhǎng)度傲醉,slice 也會(huì)一直提取到原數(shù)組末尾。

用slice函數(shù)選擇數(shù)組元素

24.some:

some()?方法測(cè)試數(shù)組中的某些元素是否通過(guò)由提供的函數(shù)實(shí)現(xiàn)的測(cè)試呻率。

some?為數(shù)組中的每一個(gè)元素執(zhí)行一次callback?函數(shù)硬毕,直到找到一個(gè)使得 callback 返回一個(gè)“真值”(即可轉(zhuǎn)換為布爾值 true 的值)。如果找到了這樣一個(gè)值礼仗,some將會(huì)立即返回true吐咳。否則,some?返回?false元践。callback只會(huì)在那些”有值“的索引上被調(diào)用韭脊,不會(huì)在那些被刪除或從來(lái)未被賦值的索引上調(diào)用。

callback?被調(diào)用時(shí)傳入三個(gè)參數(shù):元素的值单旁,元素的索引沪羔,被遍歷的數(shù)組。

如果為?some?提供了一個(gè)thisArg參數(shù)象浑,將會(huì)把它傳給被調(diào)用的callback蔫饰,作為this值。否則愉豺,在非嚴(yán)格模式下將會(huì)是全局對(duì)象篓吁,嚴(yán)格模式下是?undefined。

some被調(diào)用時(shí)不會(huì)改變數(shù)組蚪拦。

some遍歷的元素的范圍在第一次調(diào)用callback. 時(shí)就已經(jīng)確定了杖剪。在調(diào)用?some?后被添加到數(shù)組中的值不會(huì)被?callback?訪問(wèn)到节腐。如果數(shù)組中存在且還未被訪問(wèn)到的元素被?callback?改變了,則其傳遞給?callback?的值是?some?訪問(wèn)到它那一刻的值摘盆。

25.sort:

sort()?方法用就地( in-place )的算法對(duì)數(shù)組的元素進(jìn)行排序,并返回?cái)?shù)組饱苟。 sort 排序不一定是穩(wěn)定的孩擂。默認(rèn)排序順序是根據(jù)字符串Unicode碼點(diǎn)。

語(yǔ)法:

arr.sort(compareFunction)

sort()函數(shù)默認(rèn)按照Unicode排序
情況復(fù)雜時(shí)箱熬,sort使用默認(rèn)排序不能得到想要的結(jié)果
使用映射優(yōu)化排序
自定義排序函數(shù)

26.splice:

splice()?方法通過(guò)刪除現(xiàn)有元素和/或添加新元素來(lái)更改一個(gè)數(shù)組的內(nèi)容类垦。

語(yǔ)法:

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

splice方法使用deleteCount參數(shù)來(lái)控制是刪除還是添加:

start參數(shù)是必須的,表示開始的位置(從0計(jì)數(shù))城须,如:start=0從第一個(gè)開始蚤认;start>= array.length-1表示從最后一個(gè)開始。

①糕伐、從start位置開始刪除[start砰琢,end]的元素。

array.splice(start)

②良瞧、從start位置開始刪除[start陪汽,Count]的元素。

array.splice(start, deleteCount)?? ?

③褥蚯、從start位置開始添加item1, item2, ...元素挚冤。

array.splice(start,?0, item1, item2, ...) ??

刪除一個(gè)元素并插入一個(gè)元素 ? ?
插入一個(gè)元素
清空數(shù)組

27.toLocaleString:

toLocaleString()?返回一個(gè)字符串表示數(shù)組中的元素。數(shù)組中的元素將使用各自的toLocaleString?方法轉(zhuǎn)成字符串赞庶,這些字符串將使用一個(gè)特定語(yǔ)言環(huán)境的字符串(例如一個(gè)逗號(hào) ",")隔開训挡。

toLocaleString()函數(shù)可以將數(shù)組以字符串形式表達(dá),并可以傳入兩個(gè)參數(shù)

28.toString:

toString()?返回一個(gè)字符串歧强,表示指定的數(shù)組及其元素澜薄。Array?對(duì)象覆蓋了Object?的?toString?方法。對(duì)于數(shù)組對(duì)象誊锭,toString?方法返回一個(gè)字符串表悬,該字符串由數(shù)組中的每個(gè)元素的?toString()?返回值經(jīng)調(diào)用join()?方法連接(由逗號(hào)隔開)組成。

返回?cái)?shù)組的字符串表達(dá)

29.unshift:

unshift()?方法將一個(gè)或多個(gè)元素添加到數(shù)組的開頭丧靡,并返回新數(shù)組的長(zhǎng)度蟆沫。unshift?方法會(huì)在調(diào)用它的類數(shù)組(array-like)對(duì)象的開始位置插入給定的參數(shù)。

unshift?特意被設(shè)計(jì)成具有通用性温治;這個(gè)方法能夠通過(guò)call?或?apply方法作用于類似數(shù)組的對(duì)象上饭庞。不過(guò)對(duì)于沒有 length 屬性(代表從0開始的一系列連續(xù)的數(shù)字屬性的最后一個(gè))的對(duì)象,調(diào)用該方法可能沒有任何意義熬荆。

當(dāng)一個(gè)對(duì)象調(diào)用該方法時(shí)舟山,返回其?length?屬性值。

在數(shù)組的頭部插入值

30.values:

values()?方法返回一個(gè)新的Array Iterator?對(duì)象,該對(duì)象包含數(shù)組每個(gè)索引的值累盗。

注意:Chrome 未實(shí)現(xiàn)寒矿,F(xiàn)irefox未實(shí)現(xiàn),Edge已實(shí)現(xiàn)若债。

Chrome 及Firefox可以用"arr[Symbol.iterator]()"方法來(lái)代替values()方法:

Array.prototype[@@iterator]()屬性和 values() 屬性的初始值均為同一個(gè)函數(shù)對(duì)象符相。

node環(huán)境未實(shí)現(xiàn)values函數(shù)

31.Symbol(Symbol.iterator):??values()

@@iterator?屬性和?values()?屬性的初始值均為同一個(gè)函數(shù)對(duì)象。

使用iterator迭代數(shù)組
另一種迭代方式
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蠢琳,一起剝皮案震驚了整個(gè)濱河市啊终,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌傲须,老刑警劉巖蓝牲,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異泰讽,居然都是意外死亡例衍,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門已卸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)肄渗,“玉大人,你說(shuō)我怎么就攤上這事咬最◆岬眨” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵永乌,是天一觀的道長(zhǎng)惑申。 經(jīng)常有香客問(wèn)我,道長(zhǎng)翅雏,這世上最難降的妖魔是什么圈驼? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮望几,結(jié)果婚禮上绩脆,老公的妹妹穿的比我還像新娘。我一直安慰自己橄抹,他們只是感情好靴迫,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著楼誓,像睡著了一般玉锌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上疟羹,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天主守,我揣著相機(jī)與錄音禀倔,去河邊找鬼。 笑死参淫,一個(gè)胖子當(dāng)著我的面吹牛救湖,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涎才,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼捎谨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了憔维?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤畏邢,失蹤者是張志新(化名)和其女友劉穎业扒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體舒萎,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡程储,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了臂寝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片章鲤。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖咆贬,靈堂內(nèi)的尸體忽然破棺而出败徊,到底是詐尸還是另有隱情,我是刑警寧澤掏缎,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布皱蹦,位于F島的核電站,受9級(jí)特大地震影響眷蜈,放射性物質(zhì)發(fā)生泄漏沪哺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一酌儒、第九天 我趴在偏房一處隱蔽的房頂上張望辜妓。 院中可真熱鬧,春花似錦忌怎、人聲如沸籍滴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)异逐。三九已至,卻和暖如春插掂,著一層夾襖步出監(jiān)牢的瞬間灰瞻,已是汗流浹背腥例。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酝润,地道東北人燎竖。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像要销,于是被迫代替她去往敵國(guó)和親构回。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line)疏咐,也就是一...
    悟名先生閱讀 4,118評(píng)論 0 13
  • Lua 5.1 參考手冊(cè) by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,740評(píng)論 0 38
  • 第3章 基本概念 3.1 語(yǔ)法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡(jiǎn)單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,097評(píng)論 0 21
  • 創(chuàng)建數(shù)組 arr.length--- title: js正則表達(dá)式categories: javascriptda...
    angelwgh閱讀 1,383評(píng)論 0 2
  • 在遇到事情時(shí)纤掸,第一個(gè)想到的是你 在看到喜歡的視頻和圖片是,第一個(gè)想到是你 就是想把一切都和你分享 但是 我在通訊錄...
    冰大頭閱讀 287評(píng)論 0 0