数组的遍历和一些高阶函数方法

资源:https://www.jianshu.com/p/79831d81f6b3

数组的一些的高阶函数:map()是es6的方法,forEach遍历整个数组,filter过滤数组,还有一个find数组,也是过滤的,但是它只要找到一个真值,就return了。

1:map()又称为数组的映射,我的理解就是,以一条数组为模板,刻画出不同的数组。一般高阶函数有三个参数,第一个参数代表的数组的项也就是值,第二个参数指的是数组的下标,第三个值指的数组本身,具体情况看下图:

这上面我们是在控制台中显示,第一个参数a代表的是什么,下面是控制台的显示:

从控制台的显示我们可以看出,我们第一个参数,代表的数组的没项的值。

 

第二个参数代表的值:

我们可以在控制台中显示我们第二个参数是什么:

从控制台中我们可以看出第二个值代表的是我们数组的下标。

第三个参数代表的是什么:

接下来在控制台中显示:

在控制台中我们看出第三个参数c代表的是我们数组本身。

接下来是我们高阶函数map的意义:

我们从上面知道了a这个参数代表的是数组每个项的值,所以我们只需要就a进行运算,就可以得到不同的数组

下面是控制台中的显示:

从控制台中看到我们得到新的数组,且每一项是模板数组的6倍。

2:forEach的高阶函数,它的作用是遍历整个数组,跟for循环差不多,它也有三个参数,跟上面map的参数的意义是一样的

下面是具体用法:

我们在html中写出4个按钮,然后在js中用document.getElementsClassName("box)采用类名的获取的方法获取改数组对象,然后赋值给数组box1,在用boxs1本身的forEach方法,给他每项添加一个点击事件,当按钮点击的时候返回数组的下标。因为不好录像用一个图表示,还请谅解,如果有更好的方法,希望跟我分享一下,谢谢。

3:filter数组的过滤高阶函数方法,过滤数组里面不相同的类型或者其他。他也有三个参数参数的意义一般都一样的。下面小列子:

我们刚刚已经介绍完了数组的参数,这几行代码写的是过滤数组arr,如果不是Boolean类型的数组就去掉。

下面是控制台的显示:

在控制台,我们看到,不是Boolean类型的值,已经被过滤了。

4:find的高阶函数,它也过滤,但是它只要遇到一个真值就退出了函数,下面的列子会具体说明:

上面的代码说的是:过滤掉arr数组里面小于2的数,下面是控制台的显示:

可以看到arr数组里面比2大于的还有4,但是数组并没有显示出来,这就是find过滤方法的本质,它只要遇到一个真值就会退出,在4前面还有一个3,3比2打,所以3是真值,所以他把3拿出来了就退出了函数,并没有管4;

5:数组去重 splice

    (1)正序去重:从前面往后面去重。有弊端。下面的列子说明:

   上面的代码的意思是:设立一个数组,里面有很多数是重复的,我们如何去掉这些重复的数,用splice函数,我们假比要删除数组里面2的重复数,如果我们采用正序去重的方法会有弊端,那就是图中所说的会把所有的相同的数都删除。下面是控制台中的显示:

从控制台中看出我们的数组确实把2相同的都删掉了,数组里面没有2了,但这不是我们想要的结果,因为数组里面没有2了。

还有一种情况,我们看下图

 

 

 

我们可以在上面的图中看到有两个2连在一起的,我们在去去掉重复的数,看看2会不会保存。

控制台的显示:

我们可以看到2保存下来了,但是万一是4个那哪有会是神马情况:


上面的代码有4个2相邻,那我们在去重会有什么情况,请看下面的控制台显示:

保留两个2了,这是为什么,这是因为正序去重的弊端,当我们正序去重的时候,当我们去掉一个相同的数组项的时候,下一项会自动的顶上前面的哪一项,所以我们就漏了一个,所以会出现这种情况,所以最好的去重的方法是反序去重

   反序去重:从最后面依次往前面比。具体情况看下图:

   

控制台的显示:

详细情况可以看到去掉重复的数了,在上面中下面的两行代码的意思,如果我们去掉i的话,数组不但去重,还会按照升序排列,但是去掉j的话就是还是去掉重复的位置。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值