JS数组的几个高阶函数

JS数组的几个高阶函数

(1) Filter函数

const nums=[10,30,124,21,34,12]

找出小于100的数

Filter()的参数为一个函数,这个函数必须返回一个boolean值

为true时,函数内部会自动将这次回调的n加入到一个新的数组中。为false时,函数会过滤掉这次的n

Let newNums = Nums.filter(function(n){
    Retuen n<100  //每次遍历的n判断是否为true,为true加入新数组,为false则忽略此次结果
})
Console.log(“newNums”)//打印结果为[10,30,21,34]

(2) map函数

将上面获取到的数组全部乘以2

let new2Nums = newNums.map(function(n){
	return n*2  //遍历filter函数获取到的数组,再为每项做一个乘以2的操作,结果又返回一个新的数组
})
Console.log(“new2Nums”);//结果为[20,60,42,68]

(3) reduce函数

作用:对数组中的所有内容进行汇总(全部相乘或者相加之类的)

Reduce(参数1,参数2):参数一为一个回调函数,参数二为一个初始值

Reduce(function(){},0)  //设置初始值为0

Let total = New2Nums.Reduce(function(preValue,n){  //回调函数里也有两个参数,第一个参数为上一次的值,第二个参数为该次循环数组里的值

Return preValue + n  //相当于把数组里的值依次相加

//第一次 preValue:0  n:20

//第二次 preValue:20  n:40

//第三次 preValue:60  n:42

//第四次 preValue:102  n:68

//最后一次 输出preValue 为 170

},0)

Console.log(‘total’)  //打印结果为170

所以,上面的所有代码可以合体成一行代码

Let total = nums.filter(function(n){

  Return n<100

}).map(function(n){

  Return n*2

}).reduce(function(preValue,n){

  Return preValue + n

},0)

 

Console.log(‘total’)  //打印结果依旧为170

然而 我们还能更加简洁,使用ES6的箭头函数,上面的代码可以简写为

Let total = nums.filter(n => n<100).map(n => n*2).reduce((pre,n) =>pre+n)

Console(‘tptal’) //打印结果依旧为170

其他一些方法

(4)find()函数

Find( )用于遍历数组,并返回第一个符合条件的元素,必须要传一个参数表示当前遍历的元素,例如

Shuzu.find( item => item.num === 1 )

遍历数组返回第一个num属性等于1的元素

(5)forEach()函数

forEach()函数用于调用数组中的每一个元素进行一些操作

用法是

Array . forEach( 要执行的回调函数 )

其中回调函数必须传一个参数,表示遍历的当前元素

例如:

Shuzu.forEach(item=>{ item.count += 1 })

对数组中的每个元素的count属性进行加一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript高阶函数的重构可以通过以下几个步骤来完成: 1. 抽象出通用的功能:首先,确定哪些功能是可以被抽象出来的,以便可以在不同的场景中重复使用。这可能涉及到对数组遍历、过滤、映射、排序等操作。 2. 定义一个高阶函数:使用函数来接收其他函数作为参数或者返回一个函数高阶函数可以将通用的功能与具体的业务逻辑分离开来,使代码更具可读性和可维护性。 3. 使用函数作为参数:将原始的代码中需要重复的部分抽象出来,并将其作为参数传递给高阶函数。这样可以在不同的场景中重复使用该功能。 4. 返回一个函数:有时候,高阶函数需要返回一个函数,以便在调用时可以提供更灵活的定制选项。返回的函数可以根据具体的需求进行定制,从而实现更加灵活的功能。 5. 测试和验证:确保重构后的高阶函数在各种场景下都能正常工作。编写测试用例,验证函数的正确性和可靠性。 举个例子,假设有一个需要对数组中的元素进行加倍的函数: ```javascript function doubleArray(arr) { return arr.map((item) => item * 2); } ``` 可以将其重构为一个高阶函数: ```javascript function mapArray(arr, callback) { return arr.map(callback); } function double(num) { return num * 2; } const doubledArray = mapArray([1, 2, 3, 4], double); console.log(doubledArray); // 输出 [2, 4, 6, 8] ``` 通过将功能抽象出来,我们可以在不同的场景中重复使用 `mapArray` 函数,并将具体的操作逻辑作为参数传递进去,实现更灵活的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值