js数组基础与方法原理

                                                                           js数组基础与方法原理

在学习js的过程当中,不可避免的就是对于数组的应用,之前我也写过关于数组的一些简单基础,在这里主要是对于数组基础的一个升华,对于一些数组中常用的方法进行说明与使用。首先我们先写一个数组,里面的内容自己随便定义,我定义的数组如下:

1.forEach方法实现,在forEach方法中可以传入三个参数,第一个参数表示的是每一项数组中的内容,第二个参数表示index,第三个参数表示的就是数组本身。那么现在先用系统封装好的forEach方法来遍历数组中的元素。需要注意的是在使用forEach时其是不支持break,要想跳出循环,最好的方式就是使用for循环。

那么接下来我们直接在数组的原型上封装一个forEach方法,在自己封装好的方法上我们只需要输出每一项的内容,以及当前的index即可。下面也有封装好的方法的调用过程。

2.filter方法,其作用的返回一个新的数组,其根据是数组返回的true与false来确定新的数组,如果返回的结果是true则将原数组中的这一项放在新的数组之中,最后直到原数组遍历完形成一个新的数组。在这个方法当中的方法参数第一个当前数组中的每一项,第二个参数为当前数组的index。首先我们使用原生的filte方法来进行使用。,代码如下:

那么接下来就是原理的实现过程,代码如下:

其原理也是相对的比较简单,使用for循环进行遍历然后再使用一个新的数组去接收这个结果,最后返回新的数组。其应用如下:

3.map方法其作用是调用数组中的每一个元素去进行某个函数的操作,最后返回一个新的结果。其参数也与上面的参数一样,首先对系统封装好的函数进行调用。在对这个函数的原理进行封装之前我们还需要了解的就是深度克隆。下面是使用深度克隆之后obj1完全的复制obj2中的内容。代码如下:

为什么叫深度克隆呢,是因为在克隆对象的过程中如果内部有对象,如果是简单的赋值就不能将对象中的内容赋值过去。因此在这里就需要深度克隆。其代码如下:

在深度克隆的方法当中,需要设置两个参数,第一个参数用于接收第二个参数中的内容。在这里将第二个元素我们称之为目标元素。首先执行一个目标元素是否为空,如果不为空就执行下面的逻辑。在循环遍历的过程中使用for  in语句对这个对象进行遍历,如果当前复制的内容是数组就直接进行赋值,如果是对象则再进行之后的逻辑。这样一直循环遍历,最后返回目标元素即可实现深度克隆。那么接下来我们就继续实现之前的map方法,其原理代码如下:

在这部分的代码当中与之前实现filter类似,但是不同点在于如果数组内部是一个对象,就得对器进行判读,然后使用克隆。接下来就是自己封装的方法进行使用:

4.reduce()和reduceRight()使用指定的函数将元素进行求和,因此reduce常用于累加求和,reduceRight常用于从左往右进行累加求和。在自己封装的方法中我们实现的是前三个参数的调用第一个参数表示数组当中第一项,第二个参数表示数组中的第二项,第三个参数表示最后返回的结果。下面就是对于这个方法的封装:

在这个封装的方法中,如果没有传入参数则第一个参数的值就为数组中的第一项,如果有则进行后一步的操作。最后使用for循环进行遍历。那么接下来就是这个自己封装好的方法的调用:

在本篇博客中所说得是常用数组的方法,数组中还有很多的方法需要我们去了解。不过其原理大多如上面所说一样,在使用数组方法的过程中,我们只需要到官方的文档中查询即可使用。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值