##ES3的數(shù)組方法
###join();
目的:將數(shù)組轉(zhuǎn)化為字符串.
參數(shù):無or可傳一個參數(shù)(傳超過1個的參數(shù),默認取第一個參數(shù)), 參數(shù)為字符或字符串,參數(shù)將在數(shù)組的每個元素的間隔插入。PS: 參數(shù)無的時候,數(shù)組元素間隔為 ','.
是否改變原數(shù)組: 不改變原數(shù)組, 返回一個新的字符串.
逆向操作:String.split().
###reverse();
目的:將數(shù)組中的元素顛倒順序.
參數(shù):無(無視參數(shù)).
是否改變原數(shù)組:?改變原來的數(shù)組.
###sort();
目的:將數(shù)組的元素按照一定規(guī)則排序.
參數(shù):無or可傳一個函數(shù)(傳超過1個的函數(shù),默認取第一個函數(shù))。PS: 參數(shù)無的時候數(shù)組元素默認按照字母表順序排序.
函數(shù)參數(shù):
> 你必須給sort()方法傳遞一個比較函數(shù),所以一般傳遞倆個參數(shù).PS:第三個參數(shù)默認undefined.
> 假設(shè)第一個參數(shù)應(yīng)該在前,你應(yīng)該返回一個小于0的數(shù)值,
> 否則,你應(yīng)該返回一個大于0的數(shù)值,
> 假設(shè)倆個值相等(也就是說他們的排序無關(guān)緊要),函數(shù)應(yīng)該返回0.
> PS:數(shù)組元素是從前到后 倆倆比較.
是否改變原數(shù)組:?改變原來的數(shù)組.
###concat();
目的:像膠水一樣,將參數(shù)粘合在數(shù)組后面.
參數(shù):字符串或數(shù)組(參數(shù)不限)。
> 當參數(shù)為數(shù)組時,粘合的是數(shù)組的元素,而非數(shù)組本身.
> 但此方法不會扁平化數(shù)組參數(shù)(換句話說,如果你的參數(shù)是個數(shù)組,里面又嵌套了超過1個數(shù)組,這個里面的數(shù)組的元素不會被提取出來粘合,而是整個數(shù)組被粘合在新的數(shù)組后面).
是否改變原數(shù)組:不改變原數(shù)組, 返回一個新的數(shù)組.
###slice();
目的:返回數(shù)組的一個片段或子數(shù)組.
參數(shù):無or一個參數(shù)or倆個參數(shù)
> 無參數(shù)將原樣返回一個新的數(shù)組,相當于復(fù)制了一遍數(shù)組.
> 返回的數(shù)組包含第一個參數(shù)指定的位置,到第二個參數(shù)前面一個位置之間的所有元素.
> 如果只指定一個參數(shù),返回的數(shù)組將包含從開始位置到結(jié)尾的所有元素.
> 如果參數(shù)中出現(xiàn)負數(shù),它表示相對于數(shù)組中的最后一個元素的位置的個數(shù).
是否改變原數(shù)組: 不改變原數(shù)組, 返回一個新的數(shù)組.
###splice();
目的:從數(shù)組中刪除元素、插入元素、或者同時完成這倆種操作.
參數(shù):前倆個參數(shù)指定了刪除,從第三個參數(shù)開始,指定拼接。
> 第二個參數(shù)指定了應(yīng)該從數(shù)組中刪除元素的個數(shù),若省略,從起始點到數(shù)組結(jié)尾的所有元素都將被刪除.
> 第三個參數(shù)開始,指被拼接到原數(shù)組的元素,區(qū)別于concat(),?splice()會插入數(shù)組本身而非數(shù)組的元素(會扁平化數(shù)組)
是否改變原數(shù)組:?改變原來的數(shù)組.
###push()和pop();
目的:向數(shù)組中插入或刪除元素.
參數(shù):push()方法不限制參數(shù),并不會扁平化數(shù)組。pop()方法無視參數(shù).
行為:類似棧,從尾部插入或刪除值,push()方法返回數(shù)組長度,pop()方法返回被刪除的值.
是否改變原數(shù)組:?改變原來的數(shù)組.
###unshift()和shift();
目的:向數(shù)組中插入或刪除元素.
參數(shù):unshift()方法不限制參數(shù),并不會扁平化數(shù)組,當參數(shù)為一連串元素時,參數(shù)類似于被粘合在數(shù)組的頭部,而不是改變參數(shù)的順序。shift()方法無視參數(shù).
行為:倆組方法和上面的方法類似,區(qū)別在于這組方法是在數(shù)據(jù)的頭部操作.
是否改變原數(shù)組:?改變原來的數(shù)組.
###toString()和toLocaleString();
目的::將數(shù)組的每個方法轉(zhuǎn)化為字符串,并且輸出用逗號分隔的字符串列表.
參數(shù):倆個方法無視參數(shù).
是否改變原數(shù)組: 不改變原數(shù)組, 返回一個新的字符串.
ES5的數(shù)組方法
###map();
目的:將數(shù)組的每個元素傳遞給指定的函數(shù),并返回一個數(shù)組,它包含該函數(shù)的返回值.
參數(shù):一個帶有return的函數(shù)(函數(shù)中的return的值將被傳遞給新數(shù)組).
是否改變原數(shù)組: 不改變原數(shù)組,返回一個新數(shù)組。PS: 如果原數(shù)組是個稀疏數(shù)組,返回的也是相同方式的稀疏數(shù)組,它具有相同的長度,相同的稀缺元素.
###filter();
目的:將數(shù)組的每個元素傳遞給指定的函數(shù),并返回一個數(shù)組,它包含該函數(shù)的返回值.
參數(shù):一個帶有return的函數(shù)(函數(shù)中的返回值如果為true或者能轉(zhuǎn)化為true的值,就被添加到這個數(shù)組).
是否改變原數(shù)組: 不改變原數(shù)組,返回一個新數(shù)組,新數(shù)組是原數(shù)組的子集。PS: 如果原數(shù)組是個稀疏數(shù)組,和上面不一樣,它返回的數(shù)組總是稠密的.
###every()和some();
目的:對數(shù)組元素應(yīng)用指定的函數(shù)判定.
參數(shù):二者都需要一個函數(shù).
>?every()?返回true需要滿足的條件為:數(shù)組中所有元素在函數(shù)判定下都為true則返回true,否則返回false. (PS:跟他的的漢語意思一樣,每個)
>?some()?返回true需要滿足的條件為:數(shù)組中有一個元素在函數(shù)判定下為true則返回true, 否則返回false. ((PS:跟他的的漢語意思一樣,一些)
> note: 執(zhí)行every()?時,若有一個參數(shù)為false,則返回,忽略執(zhí)行后面的參數(shù).
> note: 而some()?則相反,若有一個參數(shù)為true, 則返回,?忽略執(zhí)行后面的參數(shù).
對于空數(shù)組,every()?返回true,?some()返回 false.
###reduce()和reduceRight();(不太常用,偏用于數(shù)學(xué)計算)
目的:使用指定的函數(shù)將數(shù)組元素進行組合,生成單個值.
參數(shù):reduce()?函數(shù)的第一個參數(shù)是執(zhí)行化簡操作的函數(shù).第二個是傳遞給函數(shù)的初始值(如果無,函數(shù)將把數(shù)組中的第一個元素作為其初始值).
> 空數(shù)組上,不帶初始值參數(shù)調(diào)用此函數(shù)將會報錯.
> 如果只有一個元素且沒有指定初始值,或者有一個空數(shù)組并且指定了一個初始值,reduce()?只是簡單地返回那個值而不會調(diào)用化簡函數(shù).
>?reduceRight()?和reduce()?作用一樣, 區(qū)別在于它執(zhí)行的順序是從右到左.
是否改變原數(shù)組: 不改變原數(shù)組,返回一個新數(shù)組。
###indexOf()和lastIndexOf()
目的:搜索數(shù)組中具有給定值的元素。
參數(shù):第一個參數(shù)指的是需要搜索的值,返回則找到第一個元素的索引或者如果沒有找到就返回-1.
第二個參數(shù)是可選的,它指定數(shù)組中的一個索引,表示從哪里開始搜索,可以是負數(shù),它代表相對于數(shù)組末尾的個數(shù)。最后一個元素是-1,倒數(shù)第二個元素為-2,以此類推...
###lastIndexOf()?指從前往后查詢.?lastIndexOf()?指從后往前查詢.
ES6的數(shù)組方法
###Array.from();
目的:將類數(shù)組對象和可遍歷對象轉(zhuǎn)化為數(shù)組.
參數(shù):上述對象以及第二個參數(shù)。第二個參數(shù)類似于數(shù)組中的map方法,用來對每個元素進行處理,將處理后的值放入返回的數(shù)組.
用法:const toArray = (() => Array.from ? Array.from : obj => [].slice.call(obj) )();(兼容寫法).
###Array.of();
目的:將一組值轉(zhuǎn)化為數(shù)組.
參數(shù):無或無限(無時返回一個空數(shù)組).
###copyWithin();
目的:在數(shù)組內(nèi)部,將指定位置的成員復(fù)制到其他位置(會覆蓋原有成員).
參數(shù):target(必須): 從該位置開始替換數(shù)據(jù).
> start(可選):從該位置開始讀取數(shù)據(jù).
> end(可選):到該位置的前一個位置.
是否修改原數(shù)組:修改原數(shù)組.
###find()和findIndex();
目的:在數(shù)組內(nèi)部, 找到第一個符合條件的數(shù)組成員.
參數(shù):回調(diào)函數(shù)接受三個參數(shù),分別表示當前值,當前位置,原數(shù)組.
倆個方法都接受第二個參數(shù)用來綁定函數(shù)中的this的值.(綁定作用域).
PS: 這兩個方法都可以發(fā)現(xiàn)NaN,彌補了數(shù)組的IndexOf()?方法的不足。
###fill();
目的:如其意,填充一個數(shù)組.
參數(shù):第一個參數(shù)表示被填充的元素.
第二個參數(shù)表示填充的起始位置.
第三個參數(shù)表示填充的結(jié)束位置(指定位置之前一個).
ES7的數(shù)組方法
###includes();
目的:表示某個數(shù)組是否包含給定的值,與字符串的includes()方法類似.
參數(shù):第一個參數(shù)表示要查找的數(shù),第二個參數(shù)表示搜索的起始位置,返回一個布爾值.
意義:推薦使用這個而不是indexOf()因為后者會對NaN造成誤判.