结合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----->依次将多个值缩减为一个