<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
/*
reduce 归并事件
只是逼格更高而已
*/
/*
arr.reduce( callback,[initialValue] )
reduce为数组中的每一个元素依次执行回调函数 接收四个参数值 :
初始值(或者上一次回调函数的返回值)
当前元素值
当前索引
调用reduce的数组
callback:执行数组中每个值的函数 包含四个参数
1、previousValue (上一次调用回调返回的值 或者 提供的初始值 (initialValue))
2、currentValue (数组中当前被处理的元素)
3、index(当前元素所在数组中的索引)
4、array(调用reduce的数组)
initialValue(作为第一次调用callback的第一个参数)
*/
/* 实例解析initialValue参数 */
// var arr = [1,2,3,4];
/* var arr = [];
var sum = arr.reduce( function(prev,cur,index,arr){
console.log(prev,cur);
return prev + cur;
} ,0 ) */
//没有写初始值 循环了三次 从数组的第一项开始循环的
// console.log( arr,sum );
// var sum = arr.reduce( function(prev,cur,index,arr){
// console.log(prev,cur);
// return prev + cur;
// } , 0)
//写了初始值 从数组的第零项开始循环的 循环了四次
/*
如果没有提供initialValue,reduce会从索引1的地方开始执行callback方法,跳过第一个索引
如果提供了initialValue,从索引0开始
如果数组为空 会报错 所以设置初始值会更加安全
*/
/* reduce的简单用法 数组求和 求乘积*/
// var arr = [1,2,3,4];
// var sum = arr.reduce( (prev,cur) => prev+cur )
// // console.log(sum)
// var mul = arr.reduce( (prev,cur) => prev*cur )
// console.log(mul)
/* reduce 的高级用法
计算数组中每个元素出现的次数
*/
// let names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
// let nameNum = names.reduce( (pre,cur)=>{
// if(cur in pre){
// pre[cur]++
// }else{
// pre[cur] = 1
// }
// return pre
// },{} )
// console.log(nameNum)
/* 数组去重 */
// let arr = [1,2,3,4,2,1,2,3,4];
// let newArr = arr.reduce( (pre,cur)=>{
// if( !pre.includes(cur) ){
// return pre.concat(cur);
// }else{
// return pre;
// }
// },[] )
// console.log(newArr)
/* 数组的concat方法 连接数组或者数组中的值*/
// let arr = [1,2,3,4,5]
// console.log( arr.concat([2,3,4,5,6]) )
</script>
</body>
</html>
前端循环reduce的用法
最新推荐文章于 2024-02-03 16:28:39 发布