ES5數組拓展

Array.isArray(obj)

這是Array對象的一個靜態函數,用來判斷一個對象是不是數組


.indexOf(element) / .lastIndexOf(element)

這兩個方法用于查找數組內指定元素的位置,查找到第一個后返回,沒有查找到返回-1,indexOf從頭至尾搜索,lastIndexOf反向搜索。

  • 先讓我們回憶一下ES3中查找數組內元素的方法:


    ES3
  • ES5的拓展方法:


    ES5

    不但可以查找數組中是否有該元素,還得到了元素在數組中所在位置。

.forEach(function(element, index, array))

遍歷數組,參數作為一個回調函數,回調函數有三個參數

  1. 當前元素
  2. 當前元素索引值
  3. 整個數組

如何應用呢:



對數組的每一項進行一個操作.

.every(function(element, index, array)) / .some(function(element, index, array))

這兩個函數類似于離散數學中的邏輯判定,回調函數返回一個布爾值

  1. every是所有函數的每個回調函數都返回true的時候才會返回true,當遇到false的時候終止執行,返回false



  2. some函數是“存在”有一個回調函數返回true的時候終止執行并返回true,否則返回false

    在空數組上調用every返回 true,some返回 false

.map(function(element))

與forEach類似,遍歷數組,回調函數返回值組成一個新數組返回,新數組索引結構和原數組一致,原數組不變


.filter(function(element))

返回數組的一個子集,回調函數用于邏輯判斷是否返回,返回true則把當前元素加入到返回數組中,false則不加
簡單的可以理解為一個過濾的作用,過濾出你想要篩選的元素返回一個新數組,顧名思義這個新數組只展示你的過濾項。


.reduce(function(v1, v2), value) / .reduceRight(function(v1, v2), value)

遍歷數組,調用回調函數,將數組元素組合成一個值,reduce從索引最小值開始,reduceRight反向,方法有兩個參數

  1. 回調函數:把兩個值合為一個,返回結果
  2. value,一個初始值,可選

手動實現一個reduce方法:

這個方法的缺點是影響到了原數組,原數組發生了變化。
改進方法:


應用到之前的函數(克隆原數組并添加一個初始值):


拓展:
var arr = [3, ['4,5', 7, [1]], [2, 10]];
function flat(){
  ... 
}
var arr2 = flat(arr);
console.log(arr2); //寫一個函數,結果為 [3, '4,5', 7, 1, 2, 10]

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • ES5 數組拓展 ES5為Array對象做了大幅拓展 Array.isArray(obj) 這是Array對象的一...
    南山碼農閱讀 264評論 0 0
  • Javascript有很多數組的方法,有的人有W3C的API,還可以去MDN上去找,但是我覺得API上說的不全,M...
    頑皮的雪狐七七閱讀 4,207評論 0 6
  • Array.isArray(obj)是不是數組,判斷! 這是一個Array對象的一個靜態函數,判斷一個對象是不是數...
    流著萬條永遠的河閱讀 235評論 0 0
  • Array.isArray(obj) 判斷一個對象是不是數組 .indexOf(element)/.lastInd...
    王難道閱讀 260評論 0 0
  • 1.JQuery 基礎 改變web開發人員創造搞交互性界面的方式。設計者無需花費時間糾纏JS復雜的高級特性。 1....
    LaBaby_閱讀 1,200評論 0 1