ES6之数组操作
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之数组操作的更多相关文章
- es6常用数组操作及技巧汇总
定义数组 const array = [1, 2, 3]; // 或者 const array = new Array(); array[0] = '1'; 检测数组 Array.isArray([] ...
- es6的数组操作
//foreach 迭代 var arr = [1, 2, 3]; var sum = 0; arr.forEach(function(value, index, array) { console.l ...
- 包括ES6在内的数组操作(待更)
下面是我对ES6和古老的JS(ES3)一些数组操作的总结,附带了一些我曾经用上的. map处有待更内容. 贴一下有借鉴的网站:https://segmentfault.com/a/1190000002 ...
- js数组操作find查找特定值结合es6特性
js数组操作find查找特定值结合es6特性
- ES6 二进制数组
二进制数组(ArrayBuffer对象.TypedArray视图和DataView视图)是JavaScript操作二进制数据的一个接口.这些对象早就存在,属于独立的规格(2011年2月发布),ES6将 ...
- js之数组操作
js之数组操作 前言 本文主要从应用来讲数组api的一些操作,如一行代码扁平化n维数组.数组去重.求数组最大值.数组求和.排序.对象和数组的转化等.(文章摘自:https://segmentfault ...
- ES6定型数组
前面的话 定型数组是一种用于处理数值类型(正如其名,不是所有类型)数据的专用数组,最早是在WebGL中使用的,WebGL是OpenGL ES 2.0的移植版,在Web 页面中通过 <canvas ...
- 将0移到最后,在原数组操作,并且不能改变源数据顺序(JS编程)
一.问题描述: 将0移到最后,在原数组操作,并且不能改变源数据顺序. 示例:输入:[2,0,0,1,0,3], 结果:[2,1,3,0,0,0] 二.问题分析与解决: 注意是在原数组上操作,不要进行 ...
- JS数组操作:去重,交集,并集,差集
原文:JS数组操作:去重,交集,并集,差集 1. 数组去重 方法一: function unique(arr) { //定义常量 res,值为一个Map对象实例 const res = new Map ...
随机推荐
- Android 移动端数据结构
## SparseArray ## SparseBooleanArray ## SparseIntArray ## SparseLongArray * 位于android.util,Android 中 ...
- GMap.net控件学习记录
主要参考网址 http://www.cnblogs.com/luxiaoxun/p/3802559.html http://www.cnblogs.com/luxiaoxun/p/3463250.ht ...
- hdu1542 Atlantis (线段树+扫描线+离散化)
Atlantis Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- 转:Android文件存储路径getFilesDir()与getExternalFilesDir的区别
作为一个开发者,我们经常需要通过缓存一些文件到SD卡中,常见的方式就是,通过: File sdCard = Environment.getExternalStorageDirectory(); 获取S ...
- Java 虚拟机:互斥同步、锁优化及synchronized和volatile
互斥同步 互斥同步(Mutual Exclusion & Synchronization)是常见的一种并发正确性保证手段.同步是指子啊多个线程并发访问共享数据时,保证共享数据在同一时刻只能被一 ...
- DIOCP3-关于TIOCPConsole和编码解码器
TIOCPConsole是继承至TIocpTcpServer,做了管理和调用编码和解码器器的功能.可以通过向他注册编码和解码器可以忽略粘包的问题. 这样如果TIOCPConsole客户端必须按照一 ...
- CSAPP 读书笔记 - 2.31练习题
根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1) 属于第一种情况 sum = x ...
- JVM垃圾回收--年轻代、年老点和持久代
关键字约定 Young generation –>新生代 Tenured / Old Generation –>老年代 Perm Area –>永久代 年轻代: 所有新生成的对象首先 ...
- VirtualBox中安装CentOS-7问题说明
之所以选择VirtualBox和CentOS,原因很简单. 目前我只有一台PC,用了几年了,性能很一般,我还需要用它做其他应用,不能直接装Linux,万一安装不成功,有可能一周内就完全没法学习了.以前 ...
- Redhat6.5安装DB2 Express-C版本
Linux Redhat6.5安装DB2 Express-C版本: 创建相关用户和组 创建用户组: groupdel db2iadm1 groupadd -g 999 db2iadm1 groupad ...