JavaScript ES6数组方法详解:map与reduce

作者:异步漫步

时间:2026-10-24

浏览:612

本文详细介绍JavaScript ES6中数组新增的两个重要方法:map和reduce。map用于将原数组元素通过函数处理后生成新数组,常用于类型转换或数据映射;reduce则通过累加器函数将数组元素合并为单个值,支持指定初始值。文章包含具体代码示例,展示字符串转整数及累加计算的实际应用,帮助开发者掌握这两个核心数组处理技巧。

文章目录

说明

在ES6标准中,数组类型新增了两个实用的方法:map和reduce。

1.map()

map()方法接收一个回调函数作为参数,该函数会对原数组中的每个元素执行处理操作,并将所有处理结果收集到一个新数组中返回,原数组保持不变。

代码示例:

假设有一个包含字符串数字的数组,我们需要将其转换为整数类型的数组。

let arr = ['1', '20', '-5', '3'];
console.log(arr)
//传统写法
let newArr = arr.map(function(s) {
	return parseInt(s);
});
console.log(newArr); //输出[1,20,-5,3]
//箭头函数
let newArr2 = arr.map(s => parseInt(s));
console.log(newArr2) //输出[1,20,-5,3]

说明

2.reduce()

reduce()方法接收一个必须提供的回调函数和一个可选的初始值。该回调函数接收两个参数,用于对数组元素进行累积计算。下面详细解析其工作机制:

函数原型:

reduce(callback, initialValue)

函数参数说明:

callback表示上一次reduce处理返回的结果值:

callback包含四个参数,分别是:上一次累积的结果值、当前正在处理的元素、当前元素的索引以及原数组本身。

initialValue代表数组中即将被处理的下一个元素。

函数作用机制:

reduce()方法从左至右依次遍历数组,将每个元素通过回调函数处理后,把返回结果作为下一次处理的第一个参数(即累加器)。如果是第一次执行,则使用前两个数组元素作为参数,或者使用用户指定的初始值作为起始累加器。

代码示例:

let arr = ['1', '20', '-5', '3']
arr = arr.map(item => item*2);
console.log(arr);
let result = arr.reduce((a, b) => {
    console.log('上一次计算结果值: '+a);
    console.log('当前数值: '+b);
	console.log('当前return的值(a+b):'+(a+b));
    return a+b;
}, 100);
console.log(result);

说明

综合案例

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>ES6新特性学习-(9)-扩展运算符</title>
	</head>
	<body>
		<script>
			//ES6中,数组新增了map和reduce方法。
			//1.map() :接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。 
			//举例:有一个字符串数组,我们希望转为int数组
			let arr = ['1', '20', '-5', '3'];
			console.log(arr)
			//传统写法
			let newArr = arr.map(function(s) {
				return parseInt(s);
			});
			console.log(newArr); //输出[1,20,-5,3]
			//箭头函数
			let newArr2 = arr.map(s => parseInt(s));
			console.log(newArr2) //输出[1,20,-5,3]
			// 2.reduce() :接收一个函数(必须)和一个初始值(可选),该函数接收两个参数: 
			const arr = [1, 20, -5, 3]
			//此时a=1,b=20开始从左往右循环处理
			let result1 = arr.reduce((a, b) => {
				return a + b;
			});
			console.log(result1); //输出 19
			//当有初始值传入的时候, a=1,b=1,开始从左往右循环处理
			let result2 = arr.reduce((a, b) => {
				return a + b;
			}, 1)
			console.log(result2); //输出 20
		</script>
</body>
</html>

总结

以上就是本文的全部内容,希望能对大家有所帮助。欢迎继续关注本站获取更多技术内容!

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章