浅谈ES6新增的数组方法和对象


Posted in Javascript onAugust 08, 2017

es6新增的遍历数组的方法,后面都会用这个方法来遍历数组,或者对象,还有set,map

let arr=[1,2,3,4,3,2,1,2];

遍历数组最简洁直接的方法

for (let value of arr) {
  console.log(value);//输出1,2,3,4,3,2,1,2
}

1. 数组.map()

返回一个新的数组,es5要复制一个新的数组我们一般用循环,现在直接用map

let arr=[1,2,3,4,3,2,1,2];
let newArr=arr.map((value,index,arr)=>value)
console.log(newArr)//输出[1,2,3,4],当然里面也可以返回下标的数组
console.log(newArr==arr)//输出false

2. 数组.filter()

过滤,返回为真的值,

let arr=[1,2,3,4,3,2,1,2];
let newArr1=arr.filter((value,index,arr)=>value>=3)
console.log(newArr1);//输出[3,4,3]

3. 数组.reduce()

每个参数的意思previousValue上次回调的返回值或者初始值,currentValue正在处理的数组值,currentIndex正在处理函数的下标

//以前找最大值,最小值我们是用的2层循环来找的,现在直接一行代码搞定,是不是很爽
let arr=[1,2,3,4,3,2,1,2];
let newArr2=arr.reduce((pre,cur,curIndex,arr)=>pre>cur?pre:cur)
//pre=1不大于cur=2,返回2;
//pre接收返回值2;pre=2不大于cur=3,返回3
.....
//一直找到4并且返回4;
//pre接收4,pre=4大于pre=3然后就一直返回的都是4,这样就会找到最大值

console.log(newArr2)//输出4,找到最大值,如果想找最小值只需要pre<cur?pre:cur

es6提供的一种新的数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值(包括NaN),但是set内部对象是不相等的

Set不是数组,自然就没有length属性,它有size属性,set.size,就是返回它的成员数量;

let set=new Set([1,2,3,4,3,2,1]);//这里必须传入的是数组
console.log(set)//输出set {1,2,3,4}
console.log(set.add(2))//依然输出set {1,2,3,4}
console.log(set.add(5))//输出 set {1,2,3,4,5}
console.log(set.delete(1))//输出true,表示删除成功
console.log(set.has(2))//输出true,表示存在这个值
console.log(set.clear())//输出undefined,这个方法知识删除所有值,并没有返回值
console.log(set)//这时候set已经清空了,所以输出为 set {}

Array.from()方法从一个类似数组或可以迭代的对象中创建一个新的数组实例

let set=new Set([1,2,3,4,3,2,1]);
console.log(Array.from(set))//用这个方法就可以把set对象转换我数组,输出为[1,2,3,4,3,2,1]
console.log(Array.from('hello'))//输出为['h','e','l','l','o']

利用set 和 from达到数组去重

let arr1=[1,2,2,1,1,3,5,2]
console.log(Array.from(new Set(arr1)))//输出[1,2,3,5],以后别人问你怎么数组去重,你可以装下逼了

写到这里突然想到es6的...方法

console.log([...new Set(arr1)])

Set的遍历方法

for (let value of set.keys()) {
console.log(value)//输出键
}
for (let value of set.values()) {
console.log(value)//输出值
}
for (let value of set.entries()) {
console.log(value)//输出键值对
}

es6提供了Map数据结构,它类似于对象,也是键值对的集合,但是它的强大在于键的范围可以任何类型的数据;

let map=new Map([["name","张三"],[[1,2,3],18],[{},"男"]])
console.log(map)
console.log(map.set("name","李四"))//输出 Map { 'name' => '张三', [ 1, 2, 3 ] => 18, {} => '男' }如果没有这个键,就会添加新的键值对到后面
console.log(map.get("name"))//输出李四
console.log(map.delete("name"))//输出true
console.log(map.clear())//删除所有键值对

以上这篇浅谈ES6新增的数组方法和对象就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript据option的value值快速设定初始的selected选项
Aug 13 Javascript
js封装可使用的构造函数继承用法分析
Jan 28 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
Nov 04 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
Jan 13 Javascript
详解Javascript几种跨域方式总结
Feb 27 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
Jul 13 Javascript
基于Vue实现支持按周切换的日历
Sep 24 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
Sep 21 Javascript
vue-cli如何引入bootstrap工具的方法
Oct 19 Javascript
Vue精简版风格指南(推荐)
Jan 30 Javascript
vue-cli在 history模式下的配置详解
Nov 26 Javascript
vue项目中使用rem,在入口文件添加内容操作
Nov 11 Javascript
Angularjs上传文件组件flowjs功能
Aug 07 #Javascript
详解Vue的computed(计算属性)使用实例之TodoList
Aug 07 #Javascript
详解express与koa中间件模式对比
Aug 07 #Javascript
JS实现简单短信验证码界面
Aug 07 #Javascript
ReactNative Image组件使用详解
Aug 07 #Javascript
JS实现移动端判断上拉和下滑功能
Aug 07 #Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
Aug 07 #Javascript
You might like
香妃
2021/03/03 冲泡冲煮
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
php.ini 配置文件的深入解析
2013/06/17 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
laravel migrate初学常见错误的解决方法
2017/10/11 PHP
PHP echo()函数讲解
2019/02/15 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
DLL+ ActiveX控件+WEB页面调用例子
2010/08/07 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
在JavaScript中使用timer示例
2014/05/08 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
jQuery选择器之层次选择器用法实例分析
2019/02/19 jQuery
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
python求斐波那契数列示例分享
2014/02/14 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
详解Python import方法引入模块的实例
2017/08/02 Python
python+selenium开发环境搭建图文教程
2017/08/11 Python
浅谈python常用程序算法
2019/03/22 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
python中re模块知识点总结
2021/01/17 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
外企财务年会演讲稿
2014/01/03 职场文书
中学生班主任评语
2014/01/30 职场文书
校园摄影活动策划方案
2014/02/05 职场文书
教学改革实施方案
2014/03/31 职场文书
社区义诊活动总结
2014/04/30 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
庆七一晚会主持词
2015/06/30 职场文书
社会实践心得体会范文
2016/01/14 职场文书
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis
Win11 BitLocker 驱动器加密
2022/04/19 数码科技