js 高阶函数的使用

本文探讨JavaScript中的高阶函数,包括for循环、filter()、map()、reduce()的使用,强调回调函数返回值的重要性。文章还介绍了链式编程和箭头函数,展示了如何将这些函数组合应用,如将数组元素转为字符串以及进行累积计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、for 循环

for(var i = 0; i < num.length; i++){
    console.log(num[i])
}

for(var i in num){
    console.log(num[i])
}

for(var val of num){
    console.log(val)
}

二、filter()、map()、reduce()、链式编程、箭头函数

filter()中的回调函数有一个要求,必须返回一个boolean值,

true:当返回为true时,函数内部会自动将这次回调的n加入到新的数组中,

false:当返回为false时,函数内部会过滤掉这次的n

map()作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把Array的所有数字转为字符串

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.map(String); // ['1', '2', '3', '4', '5', '6', '7', '8', '9']

reduce()把一个函数作用在这个Array的[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算

var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
    return x + y;
}); // 25

综合运用:

<!-- 高阶函数 filter/map/reduce -->
<script type="text/javascript">
const num = [10,20,111,222,444,40,50]

// 1,需求:取出所有小于100的数字

// var num11 = [];
// for(let n of num){
// 	if(n<100){
//    num11.push(n)
//  }
// }


// filter中的回调函数有一个要求,必须返回一个boolean值,
// true:当返回为true时,函数内部会自动将这次回调的n加入到新的数组中,
// false:当返回为false时,函数内部会过滤掉这次的n

let num11 =num.filter(function(n){
return n < 100
})

console.log(num11)


// 2,需求:将所有小于100的数字进行转化:全部*2

// var num22 = [];
// for(let n of num11){
// 	num22.push(n*2)
// }

let num22 = num11.map(function(n){
return n*2
})
console.log(num22)

// 3,需求:将步骤2中所有的数字相加,得到最终的结果

// var num33 = 0;
// for(let n of num22){
// 	num33 +=n
// }

// reduce函数的使用
// reduce作用对数组中的所有内容进行汇总
// preval 上一次函数的返回值

let num33 = num22.reduce(function(preval,n){
return preval + n
},0)
console.log(num33)

// 综合,链式编程
// let total = num.filter(function(n){
// 	return n < 100
// }).map(function(n){
// 	return n*2
// }).reduce(function(preval,n){
// 	return preval + n
// },0)
// console.log(total)

// 箭头函数
// let total = num.filter(n => n<100).map(n => n*2).reduce((preval,n) => preval+n)
// console.log(total)
</script>

forEach遍历循环

<script type="text/javascript">
	var arr = ['a','b','c'];	
	// 分别对应:value数组元素,index元素的索引,array数组本身
	arr.forEach(function(value,index,array){
		console.log(value);
		console.log(index);
		console.log(array);
		})
</script>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值