摘要:循環數組每一項數組下標當前調用數組本身可選初始值,作為回調函數第一個參數的默認值,也是每次回調的返回值,見代碼首頁問題轉化為數組首頁問題轉化后效果這個栗子來自配置路由時遇到的,當時也是優化了好幾個版本。
reduce
callback(一個在數組中每一項上調用的函數,接受四個參數:)
previousValue(上一次調用回調函數時的返回值,或者初始值)
currentValue(當前正在處理的數組元素)
currentIndex(當前正在處理的數組元素下標)
array(調用reduce()方法的數組)
initialValue(可選的初始值。作為第一次調用回調函數時傳給previousValue的值)
概念一搜一大把,我們聊點我遇到的和理解的,見代碼
//reduce作為累加器 let arr = [1, 2, 3, 4, 5] let sum = arr.reduce((init, item, i, self) => { console.log(`init---${init}, item---${item}, i---${i}, self---${self}`) return init + item }) console.log(sum) //15
分別看一下回調參數 見下圖
init默認為數組第一項,一次累加數組項,最后返回一項。
item循環數組每一項
i數組下標
self當前調用reduce數組本身
可選初始值,作為回調函數第一個參數的默認值,也是每次回調的返回值,見代碼
let obj = { "/home": { meta: { title: "首頁" }, component: "@/page/home" }, "/question": { meta: { title: "問題" }, component: "@/page/question" } } // 轉化為數組 let map = [{ path: "/home", meta: { title: "首頁" }, component: "@/page/home" }, { path: "/question", meta: { title: "問題" }, component: "@/page/question" }] let map1 = Object.keys(obj).reduce((arr, item) => { return (arr.push({ path: item, ...obj[item] }), arr) }, []) console.log(map1)
轉化后效果
這個栗子來自vue配置路由時遇到的,當時也是優化了好幾個版本。
接下來詳細解釋一下
Object.keys(obj) //把obj轉化為內容為key的數組 reduce((arr,item)=>{ }) //上邊已經解釋過參數了,回調后邊的參數[]:返回值默認值是一個空數組 關于 return (arr.push({ path: item, ...obj[item] }), arr) 其實可以寫成 arr.push({ path: item, ...obj[item] }) return arr
別急還有一個用法新鮮剛發現的。
//需求:判斷數組每一項的end和下一項的start是否是遞增的,返回ture or false let arr = [{ start: 1, end: 3 }, { start: 1, end: 3 }, { start: 4, end: 5 }] function isTure(arr) { let status = true arr.reduce((pro, next) => { if (pro.end >= next.start) { status = false return false } return next }) return status } console.log(isTure(arr))
這里我們巧用了 reduce的返回值,每次返回當前項,這樣兩個參數始終為1,2 | 2,3|3,4依次類推
[map]https://segmentfault.com/a/11...
//新加獲取數組重復次數最多的字符 var arr = ["a", "s", "d", "f", "g", "r", "t", "h", "y", "t", "w", "w", "w", "w", "w", "r", "d", "s"] function getMaxLen(arr) { let str = "" let len = 0 arr.reduce((map, item) => { map[item] ? ++map[item] : map[item] = 1 if (map[item] > len) { len = map[item] str = item } return map }, {}) return { str, len } } console.log(getMaxLen(arr))//{str: "w", len: 5}
推薦個人專欄:https://segmentfault.com/blog...
您的吐槽or點贊是我的動力!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/100387.html
摘要:通過創建將所有的異步操作邏輯收集在一個地方集中處理,可以用來代替中間件。 redux-saga框架使用詳解及Demo教程 前面我們講解過redux框架和dva框架的基本使用,因為dva框架中effects模塊設計到了redux-saga中的知識點,可能有的同學們會用dva框架,但是對redux-saga又不是很熟悉,今天我們就來簡單的講解下saga框架的主要API和如何配合redux框...
摘要:基本概念方法接收一個函數作為累加器,數組中的每個值從左到右開始縮減,最終為一個值。例進階應用使用方法可以完成多維度的數據疊加。在該函數內部,則執行多維的疊加工作。參考的內建函數數組方法的高級技巧 基本概念 reduce() 方法接收一個函數作為累加器(accumulator),數組中的每個值(從左到右)開始縮減,最終為一個值。 reduce 為數組中的每一個元素依次執行回調函數,不包括...
摘要:框架的使用詳解及教程在前段時間,我們也學習講解過框架的基本使用,但是有很多同學在交流群里給我的反饋信息說,框架理解上有難度,看了之后還是一臉懵逼不知道如何下手,很多同學就轉向選擇使用框架。 dva框架的使用詳解及Demo教程 在前段時間,我們也學習講解過Redux框架的基本使用,但是有很多同學在交流群里給我的反饋信息說,redux框架理解上有難度,看了之后還是一臉懵逼不知道如何下手,很...
閱讀 1158·2021-09-22 15:43
閱讀 2355·2021-09-22 15:32
閱讀 4522·2021-09-22 15:11
閱讀 2215·2019-08-30 15:55
閱讀 2588·2019-08-30 15:54
閱讀 991·2019-08-30 15:44
閱讀 1105·2019-08-29 13:26
閱讀 801·2019-08-29 12:54