摘要:循環(huán)數(shù)組每一項數(shù)組下標當前調用數(shù)組本身可選初始值,作為回調函數(shù)第一個參數(shù)的默認值,也是每次回調的返回值,見代碼首頁問題轉化為數(shù)組首頁問題轉化后效果這個栗子來自配置路由時遇到的,當時也是優(yōu)化了好幾個版本。
reduce
callback(一個在數(shù)組中每一項上調用的函數(shù),接受四個參數(shù):)
previousValue(上一次調用回調函數(shù)時的返回值,或者初始值)
currentValue(當前正在處理的數(shù)組元素)
currentIndex(當前正在處理的數(shù)組元素下標)
array(調用reduce()方法的數(shù)組)
initialValue(可選的初始值。作為第一次調用回調函數(shù)時傳給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
分別看一下回調參數(shù) 見下圖
init默認為數(shù)組第一項,一次累加數(shù)組項,最后返回一項。
item循環(huán)數(shù)組每一項
i數(shù)組下標
self當前調用reduce數(shù)組本身
可選初始值,作為回調函數(shù)第一個參數(shù)的默認值,也是每次回調的返回值,見代碼
let obj = { "/home": { meta: { title: "首頁" }, component: "@/page/home" }, "/question": { meta: { title: "問題" }, component: "@/page/question" } } // 轉化為數(shù)組 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配置路由時遇到的,當時也是優(yōu)化了好幾個版本。
接下來詳細解釋一下
Object.keys(obj) //把obj轉化為內容為key的數(shù)組 reduce((arr,item)=>{ }) //上邊已經解釋過參數(shù)了,回調后邊的參數(shù)[]:返回值默認值是一個空數(shù)組 關于 return (arr.push({ path: item, ...obj[item] }), arr) 其實可以寫成 arr.push({ path: item, ...obj[item] }) return arr
別急還有一個用法新鮮剛發(fā)現(xiàn)的。
//需求:判斷數(shù)組每一項的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的返回值,每次返回當前項,這樣兩個參數(shù)始終為1,2 | 2,3|3,4依次類推
[map]https://segmentfault.com/a/11...
//新加獲取數(shù)組重復次數(shù)最多的字符 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點贊是我的動力!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://systransis.cn/yun/100387.html
摘要:通過創(chuàng)建將所有的異步操作邏輯收集在一個地方集中處理,可以用來代替中間件。 redux-saga框架使用詳解及Demo教程 前面我們講解過redux框架和dva框架的基本使用,因為dva框架中effects模塊設計到了redux-saga中的知識點,可能有的同學們會用dva框架,但是對redux-saga又不是很熟悉,今天我們就來簡單的講解下saga框架的主要API和如何配合redux框...
摘要:基本概念方法接收一個函數(shù)作為累加器,數(shù)組中的每個值從左到右開始縮減,最終為一個值。例進階應用使用方法可以完成多維度的數(shù)據(jù)疊加。在該函數(shù)內部,則執(zhí)行多維的疊加工作。參考的內建函數(shù)數(shù)組方法的高級技巧 基本概念 reduce() 方法接收一個函數(shù)作為累加器(accumulator),數(shù)組中的每個值(從左到右)開始縮減,最終為一個值。 reduce 為數(shù)組中的每一個元素依次執(zhí)行回調函數(shù),不包括...
摘要:框架的使用詳解及教程在前段時間,我們也學習講解過框架的基本使用,但是有很多同學在交流群里給我的反饋信息說,框架理解上有難度,看了之后還是一臉懵逼不知道如何下手,很多同學就轉向選擇使用框架。 dva框架的使用詳解及Demo教程 在前段時間,我們也學習講解過Redux框架的基本使用,但是有很多同學在交流群里給我的反饋信息說,redux框架理解上有難度,看了之后還是一臉懵逼不知道如何下手,很...
閱讀 1165·2021-09-22 15:43
閱讀 2361·2021-09-22 15:32
閱讀 4533·2021-09-22 15:11
閱讀 2236·2019-08-30 15:55
閱讀 2603·2019-08-30 15:54
閱讀 997·2019-08-30 15:44
閱讀 1110·2019-08-29 13:26
閱讀 806·2019-08-29 12:54