数组操作--reduce函数
1.语法
arr.reduce(callback,[initialValue])
reduce为数组中的每一个元素依次执行回调函数,不包括数组中被删除或者从未被赋值的元素,回调函数接受四个函数:
1.previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue),如果没有提供initialValue,reduce 会从索引1的地方开始执行 callback 方法,跳过第一个索引。如果提供initialValue,则从索引0开始且下次该值为undefined)
2.currentValue (数组中当前被处理的元素)
3.index (当前元素在数组中的索引)
4.array (调用 reduce 的数组)
initialValue 作为第一次调用 callback 的第一个参数
2.reduce使用实例
1.将二维数组降为一维数组
1 2 3 4 5 6 | let arrs = [[0, 1], [2, 3], [4, 5]] let newArr = arrs.reduce((pre,cur)=>{ return pre.concat(cur) },[]) console.log(newArr); // [0, 1, 2, 3, 4, 5] |
2.多维数组转为一维数组
1 2 3 4 | let arrs = [[0, 1], [2, 3], [4,[5,6,7]]] const newArr = function (arrs){ return arr.reduce((pre,cur)=>pre.concat(Array.isArray(cur)?newArr(cur):cur),[])} console.log(newArr(arrs)); //[0, 1, 2, 3, 4, 5, 6, 7] |
3.计算数组中每个元素出现的次数
1 2 3 4 5 6 7 8 9 10 | let arrs =[ 'a' , 's' , 'd' , 'f' , 'q' , 's' , 'a' , 'v' , 'f' , 's' ] let newArr = arrs.reduce((pre,cur)=>{ if (cur in pre){ pre[cur]++ } else { pre[cur] = 1 } return pre },{}) console.log(newArr) |
4.数组去重
1 2 3 4 5 6 7 8 9 | let arrs =[ 'a' , 's' , 'd' , 'f' , 'q' , 's' , 'a' , 'v' , 'f' , 's' ] let newArr = arrs.reduce((pre,cur)=>{ if (!pre.includes(cur)){ return pre.concat(cur) // concat可以字符串数组混用 } else { return pre } },[]) console.log(newArr) // [ "a", "s", "d", "f", "q", "v" ] |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)