1. 语法
arr.reduce(callback, initialValue)
callback:每个元素都要执行的回调函数
initicalValue:作为第一次调用 callback 的第一个参数。
2. 回调函数的参数
1、previousValue (上一次调用回调返回的值,或者是提供的初始值(initialValue),这个值可以使引用数据类型)
2、currentValue (数组中当前被处理的元素)
3、index (当前元素在数组中的索引)
4、array (调用 reduce函数的数组)
3. 实例解析
数组元素求和
var arr = [1,2,3,4];
var sum = arr.reduce(function(pre, item, index, arr){console.log(pre, item, index);return pre + item;
});
console.log(sum);
数组元素求乘积
var arr = [1,2,3,4];
var mul = arr.reduce(function(pre, item, index, arr){console.log(pre, item, index);return pre * item;
});
console.log(mul);
判断数组元素出现次数
var arr = [1,2,3,'str1',"str2","str2",1,2];
arr.reduce(function(pre, item, index, arr){console.log(pre, item);if(item in pre){pre[item]++;} else{pre[item] = 1;}return pre;
},{}) //初始pre是一个空对象
去除数组中的重复元素
var arr = [1,2,3,'str1',"str2","str2",1,2,true,true,false,{},{}];
var newArr = arr.reduce(function(pre,item){if(!pre.includes(item)){pre.push(item);}return pre;
},[]) //初始pre是个空数组
console.log(newArr);
//[1, 2, 3, 'str1', 'str2', true, false, {}, {}]
数组内部分组
//给定一个数组var a = [1,2,3,4,5,6,7,...]
//使用一次reduce,五个元素一组。
var arr = [1,2,3,4,5,6,7,8,9,10,11,12];
arr.reduce(function(pre, item, index, arr) {var begin = index * 5;var end = begin + 5;var result = arr.slice(begin,end);if(result.length){pre.push(result);}return pre;
},[])
更多推荐
JS,reduce
发布评论