JavaScript?數(shù)組方法filter與reduce
前言
在ES6新增的數(shù)組方法中,包含了多個(gè)遍歷方法,其中包含了用于篩選的filter和reduce
filter
主要用于篩選數(shù)組的filter方法,在使用中,不會(huì)改變?cè)瓟?shù)組,同時(shí)會(huì)將符合篩選條件的元素,放入新的數(shù)組進(jìn)行返回。
/*** * @item 數(shù)組元素 * @index 遍歷數(shù)組下標(biāo) * @thisArr 當(dāng)前數(shù)組 */ let arr1 = [1, 2, 3, 4, 5]; let newArr1 = arr1.filter((item, index, thisArr) => { console.log(item); console.log(index); console.log(thisArr); return item > 2; }) console.log(arr1); console.log(newArr1);`
上面的代碼,運(yùn)行之后,可以看到原來(lái)的數(shù)組arr1沒(méi)有發(fā)生改變,而newArr1用于接收符合篩選條件的數(shù)組
// [1, 2, 3, 4, 5] arr1 // [3, 4, 5] newArr1
reduce
不同于map和filter這類(lèi)遍歷方法,reduce的語(yǔ)法較為特殊一點(diǎn)
語(yǔ)法:
array.reduce(function(total,currentValue,currentIndex,thisArr){},initValue); @function回調(diào)函數(shù)作為第一個(gè)參數(shù),
- total作為返回值或者初始值進(jìn)行返回
- currentValue當(dāng)前遍歷的元素
- currentIndex當(dāng)前遍歷元素下標(biāo)
- thisArr為當(dāng)前執(zhí)行操作的數(shù)組。
- initValue是作為傳遞給函數(shù)的初始值
數(shù)組求和
// 數(shù)組求和 let arr1 = [1, 2, 3, 4, 5] let totals = arr1.reduce(function (prev, next) { console.log(prev); console.log(next); return prev + next; }, 0) console.log(totals)
篩選首字母是否是含有b字母
let arr = ['beep', 'boop', 'foo', 'bar']; console.log(arr.reduce((acc, val) => (val[0] === 'b' && acc.push(val), acc), [])); // 進(jìn)階每個(gè)數(shù)是否含有'b' arr.reduce((acc, val) => (val.indexOf('b') >-1 && acc.push(val), acc), [])
除了數(shù)組求和之外,reduce還可以處理數(shù)組去重,遍歷最大值最小值的操作
同時(shí)還能已高階函數(shù)的形式供其他函數(shù)進(jìn)行調(diào)用。
結(jié)語(yǔ)
reduce和filter作為ES6中數(shù)組新增的方法,在面試和開(kāi)發(fā)中經(jīng)常會(huì)遇到,可以通過(guò)這兩個(gè)函數(shù)結(jié)合其他類(lèi)似map等新方法去處理一些較為復(fù)雜的數(shù)據(jù)。
到此這篇關(guān)于JavaScript 數(shù)組方法filter與reduce的文章就介紹到這了,更多相關(guān)JavaScript filter與reduce內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Bootstrap jquery.twbsPagination.js動(dòng)態(tài)頁(yè)碼分頁(yè)實(shí)例代碼
這篇文章主要介紹了Bootstrap jquery.twbsPagination.js動(dòng)態(tài)頁(yè)碼分頁(yè)實(shí)例代碼,需要的朋友可以參考下2017-02-02javascript函數(shù)定義的幾種區(qū)別小結(jié)
本篇文章主要是對(duì)javascript函數(shù)定義的幾種區(qū)別進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-01-01ES6的內(nèi)置對(duì)象擴(kuò)展實(shí)現(xiàn)示例
本文主要介紹了ES6的內(nèi)置對(duì)象擴(kuò)展實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07JavaScript實(shí)現(xiàn)級(jí)聯(lián)菜單的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)級(jí)聯(lián)菜單的方法,涉及javascript頁(yè)面元素操作的相關(guān)技巧,需要的朋友可以參考下2015-06-06原生js實(shí)現(xiàn)購(gòu)物車(chē)邏輯和功能
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)購(gòu)物車(chē)邏輯和功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09JavaScript實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的5種方法總結(jié)
在前臺(tái)開(kāi)發(fā)中會(huì)涉及頁(yè)面跳轉(zhuǎn)的問(wèn)題,下面這篇文章主要給大家總結(jié)介紹了關(guān)于JavaScript實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)的5種方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12