es6中对于数组操作添加了4种方法:

1.map —— 映射(一个对应一个)

2.reduce —— 汇总(多个出来一个)

3.filter —— 过滤

4.forEach —— 迭代/循环。

1.map

直接上代码理解的更快:

<script>
let arr=[1,2,34,55];
let result = arr.map(item=>item*2)
console.log(result);
</script>

返回结果:

上面的代码表示 arr 里面的元素,每个都乘以2,即每个元素都执行该方法。

2.reduce

这个理解起来可能比map要略微复杂一点,我们经常看到的计算购物车的总价啊,计算平均数啊什么的,就可以用这个方法。先看个例子:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>数组——reduce</title>
</head>
<body>
<script>
let arr=[1,5,34,55];
let sum = arr.reduce(function(tmp,item,index){
console.log(tmp,item,index)
})
</script>
</body>
</html>

返回的结果如下:

从返回结果可以轻松得出 item 是当前的那个元素,index 是索引(从1开始),那tmp对应的是什么呢?它在这里面就相当于一个中间值的作用。比如在这个例子中,就表示第一次是1,第2次是6(1+5),第3次是40(6+34),最后是95(40+55)。

所以我们如果需要获取上面数组的平均数的话,可以按下面这样写:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>数组——reduce</title>
</head>
<body>
<script>
let arr=[1,5,34,55];
let sum = arr.reduce(function(tmp,item,index){
if(index!=arr.length-1){ //不是最后一次
return tmp+item
}else{//最后一次计算平均值
return (tmp+item)/arr.length
}
})
console.log(sum)
</script>
</body>
</html>

3.filter

过滤。在用到搜索功能的时候,条件过滤是很常见的一个功能了。那么这个方法该如何使用呢?

比如说,我们现在有一个json数据,想要获取到满足某个条件的值,就可以像下面这样写:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>数组——filter</title>
</head>
<body>
<script>
/*
获取价格大于100的食品
*/
let food=[
{title:'龙虾',price:'20'},
{title:'螃蟹',price:'80'},
{title:'花螺',price:'120'},
{title:'鲍鱼',price:'200'}
]
let rich = food.filter(json=>json.price>100)
console.log(rich);
</script>
</body>
</html>

返回结果如下图:

是不是感觉用起来很酸爽~~

4.forEach

这个看这个名字,估计就能猜是干嘛的了。就是循环数组的。看下面例子:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>数组——forEach</title>
</head>
<body>
<script>
let arr=[199,24,5,34,55,72];
arr.forEach((item,index)=>{
console.log (`${index}:${item}`)
})
</script>
</body>
</html>

看到返回结果如下:

index就表示索引,item就表示当前元素的值。

上述就是es6中新增的4种操作数组的方法。说的很浅显,自己学习时做的一个笔记,所以不要觉得这玩意太弱智了哈~~

ES6之数组操作的更多相关文章

  1. es6常用数组操作及技巧汇总

    定义数组 const array = [1, 2, 3]; // 或者 const array = new Array(); array[0] = '1'; 检测数组 Array.isArray([] ...

  2. es6的数组操作

    //foreach 迭代 var arr = [1, 2, 3]; var sum = 0; arr.forEach(function(value, index, array) { console.l ...

  3. 包括ES6在内的数组操作(待更)

    下面是我对ES6和古老的JS(ES3)一些数组操作的总结,附带了一些我曾经用上的. map处有待更内容. 贴一下有借鉴的网站:https://segmentfault.com/a/1190000002 ...

  4. js数组操作find查找特定值结合es6特性

    js数组操作find查找特定值结合es6特性

  5. ES6 二进制数组

    二进制数组(ArrayBuffer对象.TypedArray视图和DataView视图)是JavaScript操作二进制数据的一个接口.这些对象早就存在,属于独立的规格(2011年2月发布),ES6将 ...

  6. js之数组操作

    js之数组操作 前言 本文主要从应用来讲数组api的一些操作,如一行代码扁平化n维数组.数组去重.求数组最大值.数组求和.排序.对象和数组的转化等.(文章摘自:https://segmentfault ...

  7. ES6定型数组

    前面的话 定型数组是一种用于处理数值类型(正如其名,不是所有类型)数据的专用数组,最早是在WebGL中使用的,WebGL是OpenGL ES 2.0的移植版,在Web 页面中通过 <canvas ...

  8. 将0移到最后,在原数组操作,并且不能改变源数据顺序(JS编程)

    一.问题描述: 将0移到最后,在原数组操作,并且不能改变源数据顺序. 示例:输入:[2,0,0,1,0,3],  结果:[2,1,3,0,0,0] 二.问题分析与解决: 注意是在原数组上操作,不要进行 ...

  9. JS数组操作:去重,交集,并集,差集

    原文:JS数组操作:去重,交集,并集,差集 1. 数组去重 方法一: function unique(arr) { //定义常量 res,值为一个Map对象实例 const res = new Map ...

随机推荐

  1. 如何使用ODBC搭配dsn链接数据库

    { OdbcConnection cn; OdbcCommand cmd; string MyString; MyString="Select * from Customers"; ...

  2. css animation和keyframes

    keyframes应用在animation上,animation应用在元素上. <html> <style type="text/css"> .div1 { ...

  3. Java:多线程,Semaphore同步器

    1. 背景 类java.util.concurrent.Semaphore提供了一个计数信号量.通过Semaphore类,可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如 ...

  4. jmeter经验---java 追加写入代码一例

    最近最项目参数化的时候用到,场景是这样的,需要测试A和B两个接口,其中B接口传入的参数必须是传递给A接口过的,所以整理一个思路就是: 1. 正常调用A接口,但是将传递给A接口的参数保存到文本里,此处要 ...

  5. Atitit 软件体系的进化,是否需要一个处理中心

    Atitit 软件体系的进化,是否需要一个处理中心 1.1. 进化树上是没有主干的..1 1.2. ,软件进化的行为1::主要就是给新的应用编写新的程序.1 1.3. ,软件进化的行为2::软件的维护 ...

  6. 第二章 使用接口(Using Interfaces)-书籍翻译

    PDF预览 下载地址 http://files.cnblogs.com/DKSoft/CodingInDelphi.pdf 1.1. 解耦(Decoupling) All through this b ...

  7. THP Transparent HugePages 相关知识与关闭【转】

    最近遇到个LINUX系统内存比较大,未开 HugePages,业务有变化导致ORACLE连接数剧增至上千个,PageTables达到上百G,导致内存不足系统HANG住的案例. 因此需要开启 HugeP ...

  8. 【Socket】linux无连接编程技术

      1.mystery引入      1)无连接编程也称为UDP编程,是采用UDP报文的形式完成的网络通信    2)UDP是一种对等通信,本身不区分服务器端和客户端    3)对等通信,最容易想到的 ...

  9. Spring Boot(三):RestTemplate提交表单数据的三种方法

    http://blog.csdn.net/yiifaa/article/details/77939282 ********************************************** ...

  10. FireFox在新标签中打开搜索结果

    原文:https://jingyan.baidu.com/article/20b68a88563a1b796cec6228.html 步骤如下: (1)在浏览器的地址栏输入:about:config, ...