js小记:filter()、forEach()、map()、reduce()、reduceRight()的区别

这篇博客详细介绍了JavaScript中的数组迭代方法,包括filter()、forEach()、map()、reduce()和reduceRight()。它们在处理数组时有各自的特点:filter()用于筛选符合条件的项组成新数组;forEach()适用于不改变数据但需执行操作的情况;map()用于创建新数组,每项是原数组项经过函数处理的结果;reduce()和reduceRight()则用于对数组进行累积操作,分别从左到右和从右到左处理。文章通过实例展示了这些方法的应用,包括数据清洗和格式转换等场景。
摘要由CSDN通过智能技术生成

一、简述

ECMAScript 5为数组定义了5个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象。
传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。根据使用的方法不同,这个函数执行后的返回值可能会也可能不会影响访问的返回值。以下是这5个迭代方法的作用。

  • every():对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true。
  • some():对数组中的每一项运行给定函数,如果该函数对任一项返回 true ,则返回 true
  • filter():对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。
  • forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
  • map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

他们的参数都一样:

  • 在每一项上运行的函数(该函数有三个参数)
    • 函数第一个参数:数组项的值
    • 函数第二个参数:数组项的索引
    • 函数第三个参数:数组对象本身
  • 运行该函数的作用域对象——影响this的值(可选)

二、区别

filter()、forEach()、map()、some()、every()都是对数组的每一项调用函数进行处理。

  • 区别:
    – some()、every()的返回值 :true / false
    – filter()、map()的返回值 :一个新数组
    – forEach()无返回值。

使用filter()、forEach()、map()、some()、every()都不改变原数组。


下面进入正题,用例子区分一下filter()、forEach()、map()间的区别:

  • filter()
var arr = [1,2,3,4];
var my = arr.filter(function(item,index,arr){
   
	return item*2 > 2; 
});
console.log(my);   //[2, 3, 4] //说明filter返回 true的项组成的数组
console.log(arr);  //[1, 2, 3, 4]
var arr = [1,2,3,4];
var my = arr.filter(function(item,index,arr){
   
	return item*2;
});
console.log(my);   //[1, 2, 3, 4]  //说因为每一项都为true
console.log(arr);  //[1, 2, 3, 4]
  • forEach()
var arr = [1,2,3,4];
var my = arr.forEach(function(item,index,arr){
   
	return item*2;
});
console.log(my);   
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值