ES6 —— 数组总结
1. map:映射 一个对一个
arr.map(function(item) { ... }) 可以配合箭头函数:arr.map(item => ... )
let arr1 = [1,2,3]
let result1 = arr1.map(item=>item*2)
console.log(result1) // [2,4,6]
let score = [56,88,90];
let grade = score.map(item=>item>=60?'及格':'不及格');
console.log(score); // [56, 88, 90]
console.log(grade); // ["不及格", "及格", "及格"]
可以看到一一对应的关系
2. reduce:汇总 一堆对一个
语法:arr.reduce(function(tmp, item, index [,arr]){ ... }[, initialValue])
tmp:初始值,或是上一次的叠加结果值,不指定initialValue时默认为arr[0]的值为起始值
item:当前值
index:当前值在数组中的index值
arr:当前数组,可不写
initialValue:指定初始执行的值
下面给几个例子用于熟悉这几个参数的含义
let arr2 = [12,69,180,8763]
arr2.reduce((tmp,item,index)=>{
console.log(tmp,item,index)
})
// 12,69,1
// undefined,180,2
// undefined,8763,3
arr2.reduce((tmp,item,index)=>{
console.log(tmp,item,index)
},[])
// [] 12 0
// undefined,69,1
// undefined,180,2
// undefined,8763,3
arr2.reduce((tmp,item,index)=>{
console.log(tmp,item,index)
},0)
// 0 12 0
// undefined,69,1
// undefined,180,2
// undefined,8763,3
tmp是初始值或是上一次的叠加结果值,所以第一个我们可以看到tmp是有值的:
当有initialValue时显示为initialValue值,如果initialValue缺省则显示arr[0]的值,即12
后面剩下的循环这里undefined是因为reduce里面没有写两者相加这个语句,所以tmp这个值是没有的
在function里添加tmp+item,看下面这两个例子:
arr2.reduce((tmp,item,index)=>{
console.log(tmp,item,index)
return tmp+item
},[])
// [] 12 0
// 12,69,1
// 1269,180,2
// 1269180,8763,3
// 这里明显是字符串的拼接了,因为初始值是[],所以tmp+item是按照字符串拼接的方式相加的
let result2 = arr2.reduce((tmp,item,index)=>{
console.log(tmp,item,index)
return tmp+item
}, 0)
// 0 12 0
// 12,69,1
// 81,180,2
// 261,8763,3
console.log(result2) // 9024 result2最后是最终求和的结果
如果想求平均值呢?逻辑是:前面循环求和,最后一次求和后除以数组个数,即:
let result3 = arr2.reduce((tmp,item,index)=>{
if(index!=arr2.length-1){ // 不是最后一个
return tmp+item
}else { // 是最后一个
return (tmp+item)/arr2.length
}
})
console.log(result3) // 2256 求平均值
3. filter 过滤 返回值是符合过滤条件的元素
arr.filter(function(){ ... })
let arr3 = [22,5,63,34,12,7,69]
let result4 = arr3.filter(item=>item%3==0) console.log(result4) // [63, 12, 69]
filter在循环的过程中有一个判断过程,是true则返回,false则去掉
4. forEach 循环迭代
arr.forEach(function(item, index){ ... })
ES6 —— 数组总结的更多相关文章
- ES6数组扩展
前面的话 数组是一种基础的JS对象,随着时间推进,JS中的其他部分一直在演进,而直到ES5标准才为数组对象引入一些新方法来简化使用.ES6标准继续改进数组,添加了很多新功能.本文将详细介绍ES6数组扩 ...
- ES6数组及数组方法
ES6数组可以支持下面的几种写法: (1)var [a,b,c] = [1,2,3]; (2)var [a,[[b],c]] = [1,[[2],3]]; (3)let [x,,y] = [1,2,3 ...
- 数组的复制及ES6数组的扩展
一.数组的复制 // alert([1,2,3]==[1,2,3]); let cc = [0,1,2]; let dd = cc; alert(dd==cc);//此时改变dd会影响cc ES5 只 ...
- es6数组的扩展
数组扩展运算符 ...(三个点) const demoArr=[0,1,2,3,4] console.log(...demoArr) // 0 1 2 3 4 // 他把一个数组用逗号分隔了出来 // ...
- ES6 数组方法拓展
ES6 数组方法拓展 1.Array.from() Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括E ...
- ES6数组相关
ES6数组新增的几个方法: 1. forEach() //forEach()遍历数组,无返回值,不改变原数组 var arr=[1,2,3,4] arr.forEach((item,index,arr ...
- ES6数组新加 Buff
欢迎关注本人公众号<迈向大前端>,里面有15本前端相关的电子书,送给在前端路上迷茫的同学们! 本章篇幅很长,分开来发,这一小篇主要讲ES6数组的Array.of()和Array.from( ...
- ES6数组的扩展--Array.from()和Array.of()
一. Array.from() : 将伪数组对象或可遍历对象转换为真数组 1.何为伪数组 如果一个对象的所有键名都是正整数或零,并且有length属性,那么这个对象就很像数组,语法上称为"类 ...
- JavaScript ES6 数组新方法 学习随笔
JavaScript ES6 数组新方法 学习随笔 新建数组 var arr = [1, 2, 2, 3, 4] includes 方法 includes 查找数组有无该参数 有返回true var ...
- 关于 ES5 & ES6 数组遍历的方法
ES5 数组遍历方法 1.for 循环 , , , , ] ; i < arr.length; i++) { console.log(arr[i]) } 2.forEach , , , , ] ...
随机推荐
- ubuntu nginx ssl 证书配置
前几天自己用 egg.js 写了个 api 接口,然后把它部署到服务器上.服务器是ubuntu 16.04 + nginx:因为要用到https,然后今天实践了一下如何配置https. 关于htt ...
- js 实用小技巧
https://blog.csdn.net/www93111/article/details/76176771
- @validated各种坑
1.@validate不起作用 经过各种测试,在@validate后加了个modelattribute("form")就不验证了,坑.. 2.错误信息的properties配置文件 ...
- 基于VC++的网络扫描器设计与实现
本文正文其实是自己的毕业论文,现在搬上来有两个原因. 一是之前大学的文档都放在百度网盘上,大概去年的时候百度网盘改版搞得不太稳定,文件夹移动次数一多里边就会有一些文件丢失了,也没有很在意.但前几天看申 ...
- spring的配置与使用
spring的配置与使用 一.Spring介绍 1. 什么是Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由 RodJohnson 在其著 ...
- Netty客户端发送消息并同步获取结果
客户端发送消息并同步获取结果,其实是违背Netty的设计原则的,但是有时候不得不这么做的话,那么建议进行如下的设计: 比如我们的具体用法如下: NettyRequest request = new N ...
- Charles在Mac、iPhone、Android上抓http/https协议的包
1.我使用的版本是4.0.2,下载和破解网上方法很多,不做说明 2.Charles在Mac上抓http/https协议的包 2.1先把这三个都给装上,装完后会自动跳转到钥匙串中 2.2如果装完后提示证 ...
- XenServer 自动化布署 (关键词: PXE ANSWER SCRIPT)
XenServer 6.x PXE自动化布署: 测试环境:win10 + Tiny pxe server 1.0.2,采用gpxelinux.0 时间:2017.1.10 PXE远程安装: 1)def ...
- balcanced-binary-tree
题目描述 Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced bi ...
- number类型精度分析
numbe类型的可设置的取值范围: number无限定 number(6)是6位整数 number(6,2)是4位整数,精确到两位小数,最多6位.四舍五入 number(6,-2)是6位整数,精确到百 ...