JS的reduce函数,及其常用例子

语法:

arr.reduce(function (prev, cur, index, arr) {...}, init)
复制代码
  • arr表示原数组;
  • prev 表示上一次调用回调时的返回值,或者初始值init;
  • cur 表示当前正在处理的数组元素;
  • index表示当前正在处理的数组元素的索引,若提供init值,则索引为0,否则索引为1;
  • init 表示初始值。

常用的参数只有两个:prev和cur。

常用例子:

        -数组求和,求乘积
        -计算数组中每个元素出现的次数
        -数组去重
        -将多维数组转化成一维数组(数组扁平化)
复制代码

1-数组求和,求乘积

let arr = [1, 2, 3, 5, 8, 10]
const result = arr.reduce((prev,cur) =>prev + cur)
console.log(result);    //29
复制代码

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

let person = ["杨幂", "迪丽热巴", "关晓彤", "加拿大电王", "加拿大电王", "杨幂", "杨幂"]

let num = person.reduce((prev, cur) => {
    if (prev.hasOwnProperty(cur)) {
        prev[cur]++
    } else {
        prev[cur] = 1
    }
    return prev
}, {})
console.log(num) //{ '杨幂': 3, '迪丽热巴': 1, '关晓彤': 1, '加拿大电王': 2 }
复制代码

3-数组去重

let arr = [1, 1, 2, 3, 8, 3, 9, 10]
let newarr = arr.reduce((prev, cur) => {
    if (!prev.includes(cur)) {
        return prev.concat(cur)
    }
    return prev
}, [])
console.log(newarr)  //[ 1, 2, 3, 8, 9, 10 ]
复制代码

4.-将多维数组转化成一维数组(数组扁平化)

let arr = [1, [2, [3, 4], 5,], 6, 7, 8, 9]
let fn = (arr) => {
 return arr.reduce((prev, cur) => {
      return  prev.concat( Array.isArray(cur) ? fn(cur) : cur )
    },[])
}
console.log( fn(arr))  //[1, 2, 3, 4, 5, 6, 7, 8, 9]

复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享