#關(guān)于ES3、ES5、ES6以及ES7所有數(shù)組的方法(api)的總結(jié)

##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造成誤判.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,707評論 0 5
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,663評論 1 51
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,503評論 0 21
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,674評論 0 4
  • 原來的模型關(guān)系經(jīng)過曉樂的修改,可我還沒整理復(fù)習(xí)那個,就忙著寫這些接口了。我們這里討論商品,產(chǎn)品和購物車之間的一些關(guān)...
    小小奶狗閱讀 458評論 0 0

友情鏈接更多精彩內(nèi)容