摘要:定義方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值從左到右開始縮減,最終計(jì)算為一個(gè)值。對(duì)空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的。
定義
reduce() 方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值(從左到右)開始縮減,最終計(jì)算為一個(gè)值。對(duì)空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的。語(yǔ)法
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)參數(shù)
var arr = [2,4,6,7,3]; // 前面兩個(gè)是必須, 0表示傳遞給函數(shù)的初始值 arr.reduce((total, currentValue, currentIndex, arr) => { // 這里total指初始值, 或者計(jì)算結(jié)束后的返回值, console.log(total); // 0 console.log(currentValue); // 2 console.log(currentIndex); // 0 console.log(arr); // [2,4,6,7,3] }, 0)幾種常見用法
1、計(jì)算數(shù)組總數(shù)
var res = arr.reduce((total,num) => { return total + num; }) console.log(res) // 22
2、合并二維數(shù)組
var red = [[0,1],[2,3],[4,5]].reduce((a,b) => { return a.concat(b) },[]) console.log(red) // [0, 1, 2, 3, 4, 5]
3、統(tǒng)計(jì)一個(gè)數(shù)組中有多少個(gè)不重復(fù)的單詞
function getWordCnt1() { return reg.reduce((prev, next) => { prev[next] = (prev[next] + 1) || 1; return prev; }, {}) } console.log(getWordCnt1()) // {apple: 2, orange: 3, pear: 1}
4、去重
var reh = [2,4,5,3,2,4,1] function distinct(reh) { return reh.reduce((prev, cur) => { return prev.indexOf(cur) != -1? prev : [...prev, cur] },[]) } console.log(distinct(reh)) // [2,4,5,3,1]擴(kuò)展
前幾天刷脈脈,看到一個(gè)面試題,要求把數(shù)組里name相等的去重,并且menu求重復(fù)的總和
var arr = [ {name: "a", menu: 2}, {name: "a", menu: 21}, {name: "g", menu: 2}, {name: "g", menu: 3}, {name: "g", menu: 3}, {name: "c", menu: 4}, {name: "c", menu: 44}, ]
如果用reduce做也是非常簡(jiǎn)單,直接上代碼
let reg= Object.entries(arr.reduce((result,obj) => { result[obj.name] = (result[obj.name] + obj.menu) || obj.menu return result; }, {})).map(obj => { return { name: obj[0], menu: obj[1] } }) console.log(reg) // [{name: "a", menu: 23}, {name: "g", menu: 8}, {name: "c", menu: 48}]總結(jié)
reduce(callback,initiaValue)會(huì)傳入兩個(gè)變量,回調(diào)函數(shù)(callback)和初始值(initiaValue)
如果沒有傳入初始值,則 reduce 方法會(huì)對(duì)從第二個(gè)元素開始的每個(gè)元素調(diào)用callback函數(shù)
如果提供了初始值(initiaValue),則 reduce 方法會(huì)對(duì)數(shù)組中的每個(gè)元素調(diào)用一次callback函數(shù)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/99375.html
摘要:一語(yǔ)法其中,表示將要原數(shù)組表示上一次調(diào)用回調(diào)時(shí)的返回值,或者初始值表示當(dāng)前正在處理的數(shù)組元素表示當(dāng)前正在處理的數(shù)組元素的索引,若提供值,則索引為,否則索引為表示初始值。 一、語(yǔ)法 arr.reduce(function(prev,cur,index,arr){...}, init); 其中,arr 表示將要原數(shù)組;prev 表示上一次調(diào)用回調(diào)時(shí)的返回值,或者初始值 init;cur 表...
摘要:最近經(jīng)常在項(xiàng)目中經(jīng)常看到別人用處理數(shù)據(jù),很是牛掰,很夢(mèng)幻,不如自己琢磨琢磨。初始值或者計(jì)算結(jié)束后的返回值。當(dāng)前元素所屬的數(shù)組對(duì)象。傳遞給函數(shù)的初始值,相當(dāng)于的初始值。 showImg(https://user-gold-cdn.xitu.io/2018/9/4/165a52f4bf93fbf4?w=6000&h=3000&f=jpeg&s=3043490); 最近經(jīng)常在項(xiàng)目中經(jīng)常看到別...
摘要:第一天寫文章,心里難免有些小激動(dòng),希望能堅(jiān)持下去,有輸出才有更好的輸入。用戶選擇完之后,我會(huì)得到一個(gè)時(shí)間戳的數(shù)組這里呢我們先需要看一下的語(yǔ)法。 第一天寫文章,心里難免有些小激動(dòng),希望能堅(jiān)持下去,有輸出才有更好的輸入。 reduce這個(gè)方法最初我是在面試題里看見的有一個(gè)長(zhǎng)度為100的數(shù)組,請(qǐng)以優(yōu)雅的方式求出該數(shù)組的前10個(gè)元素之和?答案如下 var a = [1, 2, 3, 4, 5...
摘要:不會(huì)改變?cè)瓟?shù)組,它返回過(guò)濾后的新數(shù)組。打印到控制臺(tái)成功的收集到里面錯(cuò)誤的收集到里面。語(yǔ)法參數(shù)回調(diào)當(dāng)前的當(dāng)前的索引值這個(gè)數(shù)組對(duì)象回調(diào)的指向用法場(chǎng)景這個(gè)一般就用在,判斷數(shù)組的每個(gè)元素是否符合條件。 首先是函數(shù)概述:map():返回一個(gè)新的Array,每個(gè)元素為調(diào)用func的結(jié)果 filter():返回一個(gè)符合func條件的元素?cái)?shù)組 some():返回一個(gè)boolean,判斷是否有元素是否符...
摘要:數(shù)組方法全解析包含數(shù)組自帶屬性返回創(chuàng)建數(shù)組對(duì)象的原型函數(shù)返回?cái)?shù)組對(duì)象的長(zhǎng)度這個(gè)是老熟人了,可以增加數(shù)組的原型方法和屬性,這個(gè)放在后面的繼承中講數(shù)組的方法首先讓我們看看數(shù)組的對(duì)象屬性。 Javascript 數(shù)組方法全解析(包含es6) 1. 數(shù)組自帶屬性 constructor //返回創(chuàng)建數(shù)組對(duì)象的原型函數(shù) length //返回?cái)?shù)組對(duì)象的長(zhǎng)度 prototype //這個(gè)是老...
閱讀 2829·2023-04-26 01:00
閱讀 757·2021-10-11 10:59
閱讀 2982·2019-08-30 11:18
閱讀 2680·2019-08-29 11:18
閱讀 1022·2019-08-28 18:28
閱讀 3018·2019-08-26 18:36
閱讀 2136·2019-08-23 18:16
閱讀 1070·2019-08-23 15:56