Js-压缩数组方法reduce


定义和用法

reduce()方法接收一个函数做累加器, 数组中的每个值(从左到右)开始缩减, 最后返回一个值。
reduce()方法还可以接收可选的第二个参数用做初始值

let arr = [1,2,3];
let cou = arr.reduce(function(total,num){
	// num 是数组里的每个元素
	
	// 最后必须写return, 每次循环都会把return的值重新赋值给total
	return total+num;
});
console.log(cou); // 6

看下面这个例子来理解一下totalnum这两个参数代表的意义。

let arr = [1,2,3];
let cou = arr.reduce(function(total,num){
	// 打印输出一下看每次循环的值是多少
	console.log(total,num);
	// 必须return给total重新赋值, 不然total一直为0,没有意义
	return total+num;
});
// 第一次循环把第一个数给total,第二个数给num
// 1 2
// 第二次循环把return的值给total, 下一个数给num
// 3 3
// 打印完之后还有一次相加所以最后结果为6

可以看到如果reduce()没有写第二个参数的话, 它会把数组的第一个元素给total, 第二个元素给num
如果reduce()接收了第二个参数, 那么它会用这个参数去初始化total
看一下我们给reduce()传递第二个参数的效果。

let arr = [1,2,3];
arr.reduce(function(total,num){
	console.log(total,num);
	// 最后必须return
	return total+num;
},99); // 给total初始值为99,看一下效果
// 第一次循环把初始值赋值给total, 数组的第一个元素给num
// 99 1
// 第二次循环把上一次计算结果给total,数组的下一个元素给num
// 100 2
// 第三次循环同样把上一次计算结果给total,数组的下一个元素给num
// 102 3
// 更多元素以此类推...

实例

统计每个字符出现的次数

let str = 'abcabcaab';
// 用字符串的split()方法把字符串转换成数组
let arr = str.split('');
// 定义个变量接收结果
let result = arr.reduce(function(obj,val){
	// 判断这个字符是否在对象中有记录
	if(val in obj){
		// 如果有就让它记录次数加一
		obj[val] += 1;
	}else{
		// 如果没有就记录并赋值为一
		obj[val] = 1;
	}
	// 最后返回这个对象, 对其重新赋值
	return obj;
},{}); // 设置初始值为一个空对象{}
console.log(result); // {a: 4, b: 3, c: 2}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Python454

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值