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):
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的值叠蝇;
1.concat
concat()?方法用于合并兩個(gè)或多個(gè)數(shù)組璃岳。此方法不會(huì)更改現(xiàn)有數(shù)組,而是返回一個(gè)新數(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ú)效
#2.target參數(shù)可以為負(fù)數(shù),此時(shí)從末尾開始計(jì)算
#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ì)算
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]袜匿。
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ù)組沒有元素)迫悠。
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ì)象的引用.
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的值。
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)到东抹。
9.findIndex:
findIndex()方法返回?cái)?shù)組中滿足提供的測(cè)試函數(shù)的第一個(gè)元素的索引蚂子。否則返回-1。
與find的方法用法相同缭黔。
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ú)法中止滥壕。
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è)索引的鍵。
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ì)被查找烂琴。
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)到笨蚁。
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呆盖。
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>
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開始捶惜。
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。
21.reverse:
reverse()?方法將數(shù)組中元素的位置顛倒退个,并返回該數(shù)組的引用募壕。
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)用該方法可能沒有任何意義硝逢。
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ù)組末尾。
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)
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, ...) ??
27.toLocaleString:
toLocaleString()?返回一個(gè)字符串表示數(shù)組中的元素。數(shù)組中的元素將使用各自的toLocaleString?方法轉(zhuǎn)成字符串赞庶,這些字符串將使用一個(gè)特定語(yǔ)言環(huán)境的字符串(例如一個(gè)逗號(hào) ",")隔開训挡。
28.toString:
toString()?返回一個(gè)字符串歧强,表示指定的數(shù)組及其元素澜薄。Array?對(duì)象覆蓋了Object?的?toString?方法。對(duì)于數(shù)組對(duì)象誊锭,toString?方法返回一個(gè)字符串表悬,該字符串由數(shù)組中的每個(gè)元素的?toString()?返回值經(jīng)調(diào)用join()?方法連接(由逗號(hào)隔開)組成。
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?屬性值。
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ì)象符相。
31.Symbol(Symbol.iterator):??values()
@@iterator?屬性和?values()?屬性的初始值均為同一個(gè)函數(shù)對(duì)象。