JavaScript 数组 forEach()、map()、filter()、find()、every()、some()基础运用

1、基础说明

forEach():循环遍历数组中的每个元素,并将元素传递给回调方法。

map():主要功能是可以将一个数组中的元素转换为另外一种数据格式,并返回一个新的数组,也就是投影操作。

filter():主要的功能是根据一定条件过滤数组数据。具体实现,将数组中的每个元素传递给一个回调函数,经过设定的逻辑处理返回一个布尔值,过滤相关的元素。最终返回一个新的数组。注意的是该方法不会对空数组进行检测、不会改变原始数组。

find():主要功能用于查找符合指定条件的第一个数组元素,并返回该元素。如果没有找到匹配的元素,则返回undefined。注意这里返回的是一个元素对象,filter()返回的是数组。

some():判断数组中是否有元素满足条件,只要有一条满足则返回true。

every():判断数组中所有元素是否满足条件,满足则返回true。

2、forEach()、map()、filter()、find() 基础语法:

array.forEach(function(element, index, arr), thisValue)
array.map(function(element, index, arr), thisValue)
array.filter(function(element, indedx, arr), thisValue)
array.find(function(element, indedx, arr), thisValue)

注释:
element:必选参数,当前的循环的元素值。
indedx:可选参数,当前元素的索引值,从0开始。
arr:可选参数,当前元素属于的数组对象。
thisValue:用于指定回调函数在执行时的this值。

3、案例

初始化一些案例数据

let arr = [1,2,3,4,5,6,7,8];

let scores = [{Id:1, Name:"张三", Score:98, Subject:"语文"},
			  {Id:2, Name:"李四", Score:80, Subject:"数学"},
			  {Id:3, Name:"王五", Score:85, Subject:"语文"},
			  {Id:4, Name:"李大奎", Score:58, Subject:"数学"},
			  {Id:5, Name:"吴仁星", Score:45, Subject:"英语"},
			  {Id:6, Name:"陈士楷", Score:79, Subject:"语文"}];
			  
let students = [{Id:1,Name:"张三",Age:"15",Sex:"男"},
				{Id:2,Name:"王五",Age:"16",Sex:"女"},
				{Id:3,Name:"吴仁星",Age:"23",Sex:"男"},
				{Id:4,Name:"李四",Age:"13",Sex:"女"}];

实际案例

1、forEach()循环遍历
arr.forEach((element, index, arrs) => {
	console.log(element)
})


2、map()
//arr数组内元素乘以3
let ret = arr.map(c => { return c*3 })

//取出成绩数据,只要姓名和成绩元素
//方式一:
let ret = scores(c => { 
	let item = {
		name:c.Name,
		score:c.Score
	}
	return item
})

//方式二:
let ret2 = scores.map(c => ({
	  name:c.Name,
      score:c.Score
}))

3、filter()
//删除小于等于3的数据
let ret = arr.filter(c => (c > 3))

//过滤出成绩不合格的数据
let fail = scores.filter(c => c.Score < 60)


4、find()
//找出张三的成绩数据
let ret = scores.find(c => c.Name == "张三")

5、every()
//判断数组中元素都大于0 
let ret = arr.every(c => (c > 0))

6、some()
//判断数组中是否有元素满足条件
let ret = arr.some(c => (c = 1))



4、高阶案例

在实际开发中,经常会有求两个数组的交集、差集这样的需求。 比如根据学生数组中出现的学生名称元素,过滤成绩数据。当然简单的for循环也可以实现功能,但代码的可读性就没那么好,而且代码量多。

let ret = scores.filter(f => students.map(m => { return m.Name }).some(s => s == f.Name))

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值