reduce的介绍及用法

reduce的介绍及用法reduce 总的来说用的不多 但最近看一些文章上的 reduce 的用法真的是骚气 其实 reduce 跟常用的 map forEach 一样 也是用于遍历循环 只不过它可以设置初始值 这样可以大大减少代码 增强可读性

  • ??‍?博主介绍:大家好,我是尼克.张,热爱分享知识,很高兴在这里认识大家?
  • ?擅长领域:前端开发
  • ??如果本文章各位小伙伴们有帮助的话,?关注+??点赞+?评论+?收藏,相应的有空了我也会回访,互助!!!
  • ?另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!
array.reduce((pre, cur, index, arr)=>{ 
    ... }, init); 
 const b = [1, 2, 3, 4] b.reduce((x, y) => console.log(x, y), 0) 

举例说明
1.把数组合并为一个对象

//正常使用forEach循环 let arr = [{ 
    a: 1, b: 10 }, { 
    a: 2, b: 20 }, { 
    a: 3, b: 30 }] let obj = { 
   } arr.forEach((item, index) => { 
    Object.keys(item).forEach(each => { 
    obj[`${ 
     each}${ 
     index + 1}`] = item[each] }) }) console.log(obj); //{a1:1,a2:2,a3:3,b1:10,b2:20,b3:30} //使用reduce遍历,可以看出区别在于初始值,以及reduce中必须要return你想要的值 let a = arr.reduce((pre, cur, index) => { 
    Object.keys(cur).forEach((item) => { 
    pre[`${ 
     item}${ 
     index + 1}`] = cur[item] }) return pre }, { 
   }) console.log(a); //{a1:1,a2:2,a3:3,b1:10,b2:20,b3:30} 
let arr2 = [9, 4, 3, 6, 9]; //基本类型去重 let set = arr2.reduce((pre, cur) => { 
    !pre.includes(cur) && pre.push(cur) return pre }, []) console.log(set); //[9,4,3,6] 

2.2.引用数据类型去重

let list = [ { 
    subject: "数学", marks: 80 }, { 
    subject: "语文", marks: 90 }, { 
    subject: "英语", marks: 80 }, ] function arrSet(value,arr) { 
    let obj = { 
   } let res = arr.reduce((pre, cur) => { 
    if (!obj[cur[value]]) { 
    obj[cur[value]] = true pre.push(cur) } return pre }, []) return res } let result = arrSet("marks",list); console.log(result); //[{subject:"数学",marks:80},{subject:"语文":90}] 
let arr2 = [9, 4, 3, 6, 9]; let sum = arr2.reduce((pre, cur) => { 
    return pre + cur },0) console.log(sum) //31 

3.2.引用数据类型求和

let arr = [ { 
    value: 45, }, { 
    value: 88, }, { 
    value: 101, }, ]; let newArr = arr.reduce((pre, cur) => { 
    return pre + cur.value; }, 0); console.log(newArr); //234 

4.求最大值和最小值

let arr2 = [9, 4, 3, 6, 9]; let max = arr2.reduce((prev, cur)=> { 
    return Math.max(prev, cur); }) let min= arr2.reduce((prev, cur)=> { 
    return Math.min(prev, cur); }) console.log(max,min); //9,3 
let arr = [[1, 2, 8], [3, 4, 9], [5, 6, 10]]; let res = arr.reduce((pre, cur) => { 
    return pre.concat(cur) },[]); console.log(res) //[1, 2, 8, 3, 4, 9, 5, 6, 10] 

5.2 多维数组转化为一维

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

6.求字符串中各个字符出现的次数

const str = 'jordanbryantjamescurrydurant'; const res1 = str.split('').reduce((pre, cur) => { 
    pre[cur] ? pre[cur]++ : pre[cur] = 1; return pre; }, { 
   }); console.log(res1); //{j:2,o:1,r:5,d:2,...} let arr = [] let num = Math.max(...new Set(Object.values(res1))) let value; for (let keys in res1) { 
    if (res1[keys] == num) { 
    value = keys break } } console.log(`出现最多的字母为${ 
     value},出现的次数为${ 
     num}`); //出现最多的字母为r,出现的次数为5次 
  • 加v号zyl,第一时间在浏览文章中出现不明白之处,进行交流,共同进步!!!
  • 如果这篇文章对你有用,记得留个脚印再走哟~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204707.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:43
下一篇 2026年3月19日 下午7:43


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号