es6 filter函数的用法_Es6简化操作的一些数组方法使用及原理

结合Es6数组方法的使用在Vue中使用更加简单

数组

下面方法都用这个数组

es6之前遍历数组我们通常使用for循环来遍历数组 ,拿到数组中的每一项

for循环

forEach(遍历)

forEach: forEach()会遍历数组, 循环体内没有返回值,forEach()循环不会改变原来数组的内容, forEach()有三个参数, 第一个参数是当前数组的每一项元素, 第二个参数是当前数组每一项元素的索引, 第三个参数是当前元素所属的数组(就是数组users).

使用箭头函数简化

forEach()不能跳出循环,意思就是之前 我们在使用for 循环的时候满足条件break之后就会停止循环 ,但是forEach循环却不一样 ,无论是否满足条件它都会先遍历数组中所有项 ,然后再return出满足条件的项

forEach()不能跳出循环

所有说forEach在内部性能方面不高效 ,但是这种不高效只是对比其他方法 ,一般我们肉眼很难分辨出效率快慢 ,毕竟解析的速度都是毫秒级的 ,除非是非常非常庞大的数组数据的遍历才能体现出来,可以忽略不计

forEach是如何形成的 ,我们之前在JavaScript高级说过JavaScript对象的原型 ,函数Function本身就是一个对象 ,Array也是JavaScript的内置对象 ,对象实例都能用他原型对象的方法

这样就能自定义forEach

map(遍历展开)

map:map()的主要作用, 其实是创建一个新的数组, map()的参数和forEach()是一样的 ,map()循环处理数组中的每一个数据 返回一个新的数组

参数和forEach相同

不同的是它有返回值 ,会返回一个新数组

返回新数组

JavaScript高级我们说过 ,原型 ,闭包这些函数的原理 ,虽然对我们如果只满足实际开发来说的话 ,用处确实不大

但是却能更好的让我们理解JavaScript方法的底层原理 ,通过这些原理我们就能更好地利用JavaScript ,去进行一些工具的开发 ,例如开发框架等

自定义myMap

filter(过滤数据)

filter :filter()参数和forEach()也是一样的, filter()主要是过滤的, 用来过滤数组中不满足条件的元素, 把满足条件的元素放到新的数组里, 并且不会改变原数组.

过滤出users 数组里面大于等于18的

filter对比for循环 ,更加方便直接提取出我们想要的数据 ,简化操作 ,filter的原理和map()基本一样

findIndex(查找第一个符合条件的数据的索引)

findIndex :findIndex()返回返回符合条件的元素的索引位置 ,如果没有符合条件的元素返回 -1 ,参数和forEach()一样

用法

findIndex 同样也能用作遍历 ,所以说他们的原理基本都是for循环的使用 ,只是条件不同 ,同样的我们依然可以简单写一个自己的findIndex

some(检测数组中有没有符合条件的数据 )

some: some()同样遍历数组的每一项, 然后根据循环体内的条件去判断, 只要有一个是true, 就会停止循环 ,如果有符合条件的数据 返回true 否则返回false , some() 不会改变原始数组。参数和forEach()一样

用法

every (检测数组中是否所有的数据都符合条件)

every :every()的作用, 它会遍历数组, 在循环体内写条件, 如果每一项都是true, 就会返回true, 只要有一个是false, 就会返回false ,参数都一样意思上和some有些相反

用法

reduce

reduce :reduce() 接收一个函数作为累加器, 数组中每个值(从左到右)开始缩减, 简单来说Reduce方法是指将多个值缩减为一个, reduce()接收的那个函数就是回调函数, 回调函数调用数组里的每一个元素, 直到循环结束.

reduce()跟其他几个方法不一样, 它有4个参数, 按顺序分别是 上一次的值, 当前的值, 当前值的索引, 数组.

假如, 有一个数组, 里面的元素都是数字, 现在要计算数字的和, 正常情况就直接循环数组, 然后弄个中间变量挨个加了吧, 但是用了reduce()就省事儿多了

用法

参数a 必需有,代表初始值, 或者计算结束后的返回值。 参数b必需有,代表当前元素 , 参数i可选 ,当前元素的索引 ,参数arr当前元素所属的数组对象。

a累积器 b是当前元素 a=a+b 此时b=1 a=1 --->b=2时 a=1+2 a=3----->依次将多个值缩减为一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值