目录

- [forEach](#1)
- [every](#2)
- [some](#3)
- [map](#4)
- [filter](#5)
- [reduce && reduceRight](#6)
- [indexOf](#7)
- [lastIndexOf](#8)

前言

ES6原生语法中提供了非常多好用的数组'遍历'方法给我们,让我们可以实现更多更强大的功能,下面让我们通过这篇文章好好学习下,该如何使用它们

代码线上测试地址:babel test

forEach

对数组的每个元素执行一次提供的函数。跳过空位元素

没有办法中止或者跳出 forEach() 循环,除了抛出一个异常。如果你需要这样,使用 forEach() 方法是错误的。

语法解析

arr.forEach((currentValue,index,array)=>{});
// currentValue 数组中正在处理的当前元素
// index 当前索引值
// array 正在处理的数组
// 返回值是undefined

例子则是非常简单的应用了

[1,2,3].forEach((currentValue,index,array)=>{
console.log(currentValue,index,array);
});

every

回调函数中,所有的都返回真,则返回真,有一个返回假,则返回假。
简而言之:“一假则假”

语法解析

arr.every((currentValue,index,array)=>{
// currentValue = 当前执行元素
// index = 当前索引值
// array = 执行的数组
})
返回值是true或者false

可别小看这个方法,我自己平时工作当中两个方面经常使用到

  1. 全选中使用
  2. 多个关系的搜索中使用

先看一个简单的例子

[12, 5, 8, 130, 44].every((item)=>{
return item >= 10
})
上面的意思:当数组中所有的元素的值都大于10的时候则返回true,否则返回false

全选伪代码示例

let allChecked = false;
const arr = [
{
id:"a",
name:"a",
checked:false
},
{
id:"b",
name:"b",
checked:false
}
]
allChecked = arr.every((item)=>{
return item.checked === true
})
// 实现起来就是这么简单,当所有的都选中了,allChecked 全选的变量就赋值true
// 这如果硬是用es5的语法去实现的话,还是比较麻烦的

some

回调函数中有一个返回真,则返回真
简言之:“一真则真”

语法解析

arr.some((currentValue,index,array)=>{
// currentValue = 当前执行元素
// index = 当前索引值
// array = 执行的数组
})
返回值是true或者false

代码展示

let bok = [2, 5, 8, 1, 4].some((item)=>{
return item>5
})
// bok = true
// 只要有一个数组大于5 则整体返回true

map

> 创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

语法

arr.map((currentValue,index,array)=>{
// currentValue = 当前执行元素
// index = 当前索引值
// array = 执行的数组
}) // 返回一个新的数组

实例

let arr = [1,2,3,4];
const map = arr.map(x=>x*2);
//返回每一个处理过后的新数组 [2,4,6,8]

filter

> 返回一个新数组,其结果是改数组中的每个元素符合条件的结果

语法

arr.filter((currentValue,index,array)=>{
// currentValue = 当前执行元素
// index = 当前索引值
// array = 执行的数组
}) // 返回一个新的数组

顾名思义这个应该肯定是各类查询,筛选上面

实例

let arr = [{name:"abc"},{name:"bcd"},{name:"afc"}];

arr.filter((item)=>{
return item.name.includes('b');
});
// 筛选出名字字段中带有b的项

reduce && reduceRight

> reduce()方法在数组的每个成员上执行一个reducer函数(您提供的),生成一个输出值。

reduceRight是从右到左的相加(其它的同reduce是一样的,所以这里只讲reduce)

语法

无参数
arr.reduce((accumulator, currentValue,currentIndex,array)=>{
// accumulator第一项的值或者上一次叠加的结果值
// currentValue 当前项
// currentIndex 当前项索引
// array 数组本身
});
有参数
arr.reduce((accumulator, currentValue,currentIndex,array)=>{},参数);
参数 = accumulator 第一次运行时的初始值

实例1:计算数据总和

const arr = [1,2,3];
const num = arr.reduce((acc,cur,index)=>{
return acc + cur
});
// num = 6 const num1 = arr.reduce((acc,cur,index)=>{
return acc+cur
},10)
// num = 16

实例2:计算一个字符串中字母出现的次数

const str = 'aaabbcccdd';
str.split('').reduce((acc,cur)=>{
acc[cur] ? acc[cur]++ : acc[cur] = 1
},{});
解析:初始化的值是一个空对象
运行的时候,判断对象里面是不是有当前的字母,
如果没有的话则添加到对象中,并赋值为1
如果已经存在的话在++,这样就计算出一个字符串中字母出现的次数
同样可以利用这点进行数组去重 const arr = ['a','a','b','c']; const obj = arr.reduce((acc,cur)=>{
return acc[cur] ? acc[cur]++ : acc[cur] = 1
},{}) 最后通过obj.keys() 的方法获取到的数组就是去重之后的。

indexOf

> indexOf()方法返回在数组中可以找到给定元素的第一个索引,如果不存在,则返回-1。

var beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];

console.log(beasts.indexOf('bison'));
// expected output: 1 // start from index 2
console.log(beasts.indexOf('bison', 2));
// expected output: 4 console.log(beasts.indexOf('giraffe'));
// expected output: -1

lastIndexOf

> lastIndexOf()方法返回给定元素在数组中找到的最后一个索引,如果该元素不存在,则返回-1。数组从fromIndex开始向后搜索。

var animals = ['Dodo', 'Tiger', 'Penguin', 'Dodo'];

console.log(animals.lastIndexOf('Dodo'));
// expected output: 3 console.log(animals.lastIndexOf('Tiger'));
// expected output: 1

小结

本篇文章主要讲述了ES6中数组新增的一些方法,以及如何使用。其实这些方法的实战场景还是非常多的,需要在实战中才能有更加深刻的体会

ES6 数组遍历方法的实战用法总结(forEach,every,some,map,filter,reduce,reduceRight,indexOf,lastIndexOf)的更多相关文章

  1. 关于 ES5 & ES6 数组遍历的方法

    ES5 数组遍历方法 1.for 循环 , , , , ] ; i < arr.length; i++) { console.log(arr[i]) } 2.forEach , , , , ] ...

  2. js数组遍历方法总结

    数组遍历方法 1.for循环 使用临时变量,将长度缓存起来,避免重复获取数组长度,当数组较大时优化效果才会比较明显. 1 2 3 for(j = 0,len=arr.length; j < le ...

  3. JS数组遍历方法

    常用数组遍历方法: 1.原始for循环 var a = [1,2,3]; for(var i=0;i<a.length;i++){ console.log(a[i]); //结果依次为1,2,3 ...

  4. JavaScript ES6 数组新方法 学习随笔

    JavaScript ES6 数组新方法 学习随笔 新建数组 var arr = [1, 2, 2, 3, 4] includes 方法 includes 查找数组有无该参数 有返回true var ...

  5. 浅谈6种JS数组遍历方法的区别

    本篇文章给大家介绍一下6种JS数组遍历方法:for.foreach.for in.for of.. each. ().each的区别.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. ...

  6. 数组遍历方法forEach 和 map 的区别

    数组遍历方法forEach 和 map 的区别:https://www.cnblogs.com/sticktong/p/7602783.html

  7. 数组的高阶方法map filter reduce的使用

    数组中常用的高阶方法: foreach    map    filter    reduce    some    every 在这些方法中都是对数组中每一个元素进行遍历操作,只有foreach是没有 ...

  8. Python map filter reduce enumerate zip 的用法

    map map(func, list) 把list中的数字,一个一个运用到func中,常和lambda一起用. nums = [1, 2, 3, 4, 5] [*map(lambda x: x**2, ...

  9. javascript(基础)_对数组的遍历方法总结(find, findIndex, forEach,)

    一.前言                                                                                                ...

随机推荐

  1. MongoDB的导入与导出

    一.导入与导出可以操作本地的mongodb也可以是远程的mongodb,通用选项: -h host 主机 --port port 端口 -u username 用户名 -p password 密码 如 ...

  2. 记录基于VMware虚拟机, Linux7.2下外部主机访问配置

    systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动

  3. Python基础——4高阶函数

    高阶函数 函数本身可用变量指向,把变量当做函数参数的函数成为高阶函数 map and reduce map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每 ...

  4. IBM小练习

    '''例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,如果我们将其做成一个属性,更便于理解) 成人的BMI数值: 过轻:低于18.5 正常:18.5-23.9 过重:24- ...

  5. Loj 2320.「清华集训 2017」生成树计数

    Loj 2320.「清华集训 2017」生成树计数 题目描述 在一个 \(s\) 个点的图中,存在 \(s-n\) 条边,使图中形成了 \(n\) 个连通块,第 \(i\) 个连通块中有 \(a_i\ ...

  6. ESP8266当中继

    WiFi推原理(转) http://jb.tongxinmao.com/Article/Detail/id/412 https://www.anywlan.com/thread-409913-1-1. ...

  7. 一本通 1223:An Easy Problem

    \[传送门qwq\] [题目描述] 给定一个正整数N,求最小的.比N大的正整数M,使得M与N的二进制表示中有相同数目的1. 举个例子,假如给定的N为78,其二进制表示为1001110,包含4个1,那么 ...

  8. Oracle通过Navicat导入表数据与机构,数据无法直接查询,需要加双引号的问题

    使用navicat 导入表到ORACLE时,总是会遇到虽然表格完整导入到数据库,但是往往查不出来数据,网上提供的解决办法是把查询的列 加上 双引号,或者表名加上双引号,但这解决办法却减慢了编写sql ...

  9. C#帮助类:将List转换成Datatable

    public class ListToDatatable { public static DataTable ToDataTable <T> (List <T> items) ...

  10. flask token认证

    在前后端分离的项目中,我们现在多半会使用token认证机制实现登录权限验证. token通常会给一个过期时间,这样即使token泄露了,危害期也只是在有效时间内,超过这个有效时间,token过期了,就 ...