reduce详细用法

  • Post author:
  • Post category:其他


对象里的属性求和
var result = [ { subject: 'math', score: 10 }, { subject: 'chinese', score: 20 }, { subject: 'english', score: 30 } ]; var sum = result.reduce(function(prev, cur) { return cur.score + prev; }, 0); console.log(sum) //60

将二维数组转化为一维

// let arr1 = arr.reduce((prev,cur)=>prev.concat(cur),[])//二维数组转换成一维数组

// console.log(arr1)

将多维数组转化为一维


let arr2 = [[1,2],[6,23],[2,[7,34,25]]]

let format = function(arr){


return arr.reduce((prev,cur)=>prev.concat(Array.isArray(cur)?format(cur):cur),[])

}

console.log(format(arr2))

数组降维还可以用flat()

[1, 2, [3,[4,6]]].flat(Infinity)
























数组去重























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]


计算数组中每个元素出现的次数

let names = ['lili', 'B', 'T', 'Br', 'lili']; let nameNum = names.reduce((pre,cur)=>{ if(cur in pre){ pre[cur]++ }else{ pre[cur] = 1 } return pre },{}) console.log(nameNum); //{lili: 2, B: 1, T: 1, Br: 1}
arr.reduce(callback,[initialValue])
callback (执行数组中每个值的函数,包含四个参数)

    1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue))
    2、currentValue (数组中当前被处理的元素)
    3、index (当前元素在数组中的索引) 4、array (调用 reduce 的数组) initialValue (作为第一次调用 callback 的第一个参数。)


var arr = [1, 2, 3, 4]; var sum = arr.reduce(function(prev, cur, index, arr) { console.log(prev, cur, index); return prev + cur; }) console.log(arr, sum);
打印结果:
1 2 1
3 3 2
6 4 3
[1, 2, 3, 4] 10

转载于:https://www.cnblogs.com/MDGE/p/11303064.html