js--数组的reduce()累加方法的使用

前言
正文
var arr=[1,2,3,4]var rules=function(a,b){return a+b}function myreduce(array,callback){//校验if (!Array.isArray(array)) {throw('调用对象必须是一个数组');}if (typeof callback != 'function') {throw('累计器必须是一个函数类型');}let initialValue=0//定义初始值为0if (array.length === 0) {return initialValue;}for (let index = 0; index < array.length; index++) {initialValue=callback(initialValue,array[index])}return initialValue}var totalValue =myreduce(arr,rules)console.log(totalValue)//输出10
/*** @param function 必要参数,用于执行每个数组元素的函数* @param initialValue 可选参数,传递给函数的初始值*/array.reduce(/*** @param total 必要参数,初始值或计算结束后的结果。* @param currentValue 必要参数,当前元素* @param currentIndex 可选参数,当前参数的下标* @param arr 可选参数,数组对象*/function(total, currentValue, currentIndex, arr),initialValue);
var arr=[1,2,3,4]var total=arr.reduce((a,b)=>a+b)console.log(total)//输出10
let arr = ['A', 'B', 'C', 'B', 'A'];let times = arr.reduce((pre,cur)=>{if(cur in pre){pre[cur]++}else{pre[cur] = 1}return pre},{})console.log(times);//输出{A:2,B:2,C:1}
let arr = [[0, 1], [2, 3], [4, 5]]let newArr = arr.reduce((pre,cur)=>{return pre.concat(cur)},[])console.log(newArr); // [0, 1, 2, 3, 4, 5]//同样可以实现多维到一维
let info=[{name:"小明",score:100},{naem:"小红",score:110},{name:"小强",score:120}]let totalScore=info.reduce((pre,cur)=>{return pre+cur.score},0)console.log(totalScore);//输出330
let arr = [1,2,3,4,4,1]let newArr = arr.reduce((pre,cur)=>{if(!pre.includes(cur)){return pre.concat(cur)}else{return pre}},[])console.log(newArr);// [1, 2, 3, 4]

评论
