详解es6新增数组方法简便了哪些操作


Posted in Javascript onMay 09, 2019

什么是es6?

在这里不过多阐述,我也是跟着阮一峰大佬的《es6入门 》来学习的,es6新增了很多的方法、属性,让我们在编码中得到了很高的提升,在这里只对array这块进行阐述,其他的就过不多介绍了。

言归正传,在项目中,经常会遇到处理数据,筛选数据的要求,我们更多的会借助于for循环来完成,比如:数组去重,传统方法如下(以下所有实例只列举一种)

let a = [1,2,2,3,3,4,5];
let b = [a[0]];
for(let i = 0; i < a.length; i++){
  let flag = false;
  for(let j = 0; j < b.length; j++){
    if( a[i] === b[j] ){
      flag = true;
      break;
    }
  }
  if( !flag ){
    b.push(a[i])
  }
}
console.log(b) // [1,2,3,4,5]

上面的是es6之前的处理方法,可以解决问题,但代码量可着实不少啊!在es6中,只需要一行代码就可以搞定!

Array.from &&  newSet()

let a = [1,2,2,3,3,4,5];
let b = Array.from(new Set(a))
console.log(b) // [1,2,3,4,5]

是不是及其简单!其中 new Set()会把重复的数据过滤到,得到一个类数组的对象,Array.from()可以把类数组的对象转换为真正的数组对象,有兴趣的同学可以对这两个属性进行更加深入的了解。

数组过滤

在我们拿到后端数据的时候,可能会对数据进行一些筛选、过滤,传统的做法如下

// 取出数组中name为kele的数组集合
let a = [
  {
    name: 'kele',
    title: '可口可乐'
  },
  {
    name: 'kele',
    title: '芬达'
  },
  {
    name: 'wlg',
    title: '王老吉'
  }
]

let b = [];

for(let i = 0; i < a.length; i++){
  if( a[i].name === 'kele' ){
    b.push(a[i])
  }
}

console.log(b) //[{name: 'kele', title: '可口可乐'},{name: 'kele', title: '芬达'}]

es6中的处理方法如下

Array.filter(callback)

let a = [
  {
    name: 'kele',
    title: '可口可乐'
  },
  {
    name: 'kele',
    title: '芬达'
  },
  {
    name: 'wlg',
    title: '王老吉'
  }
]

let b = a.filter(item => item.name === 'kele');

console.log(b) //[{name: 'kele', title: '可口可乐'},{name: 'kele', title: '芬达'}]

同样的,Array.filter()让我们摆脱了for循环,代码看起来更加的清爽!

Array.every(callback)

这个方法主要是判断数组中所有的元素都符合条件时,返回true

let a = [1,2,3,4,5];
let b = a.every(item => item > 2);
console.log(b) // false

Array.some(callback)

这个方法和上一个略有区别,这个方法主要判断数组中有一个元素符合条件,就返回true

let a = [1,2,3,4,5];
let b = a.some(item => item > 2);
console.log(b) // true

Array.find(callback)

这个方法是返回数组中符合条件的第一个元素,否则就返回undefined

let a = [1,2,3,4,5];
let b = a.find(item => item > 2);
console.log(b) // 3

Array.findIndex(callback)

这个方法是返回数组中符合条件的第一个元素的索引值,否则就返回-1

let a = [1,2,3,4,5];
let b = a.findIndex(item => item > 2);
console.log(b) // 2 符合条件的为元素3 它的索引为2

Array.includes(item, finIndex)

这个方法是判断数组中是否包含有指定的值,包含就返回true,否则就是false,它接受两个参数,第一个为搜索的值(必填),第二个为搜索开始的位置(选填,默认从0开始)

let a = [1,2,3,4,5];
let b = a.includes(2);
console.log(b) // true

Array.map(callback)

这个方法是返回一个根据你callback函数中的条件,返回一个全新的数组

let a = [1,2,3,4,5];
let b = a.map(item => item * 2);
console.log(b) // [2,4,6,8,10]

Array.reduce(callback)

这个方法是根据callback中的条件对数组中的每个元素都进行类加的操作,返回一个全新的值,下面做两个不同的例子,便于理解

/** 第一种 **/
let a = [1,2,3];
let b = a.reduce((i, j) => {
 return i + j;
}, 0);
console.log(b) // b
/** 第二种 **/
let a = [1,2,3];
let b = a.reduce((i,j) => {
 i.push(j)
 return i
},[0])
console.log(b) // [0,1,2,3]

...扩展运算符

这个可以很方便的帮我们实现合并两个数组

let a = [1,2,3];
let b = [4,5,6];
let c = [...a,...b];
console.log(c) // [1,2,3,4,5,6];

小结:基本上新增的一些方法用到的就是这些,一些老的方法例如push、shift、sort等等就不一一列举了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
asp 的 分词实现代码
May 24 Javascript
从阿里妈妈发现的几个不错的表单验证函数
Sep 21 Javascript
javascript json 新手入门文档
Dec 03 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
Apr 12 Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
Sep 01 Javascript
Vue 进阶教程之v-model详解
May 06 Javascript
很棒的vue弹窗组件
May 24 Javascript
浅谈React Native Flexbox布局(小结)
Jan 08 Javascript
vue实现微信分享朋友圈,发送朋友的示例讲解
Feb 10 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
Oct 29 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
Nov 06 Javascript
Vue函数式组件-你值得拥有
May 09 #Javascript
12个提高JavaScript技能的概念(小结)
May 09 #Javascript
Vue 处理表单input单行文本框的实例代码
May 09 #Javascript
使用vuex解决刷新页面state数据消失的问题记录
May 08 #Javascript
微信小程序网络层封装的实现(promise, 登录锁)
May 08 #Javascript
详解微信小程序的不同函数调用的几种方法
May 08 #Javascript
微信小程序Page中data数据操作和函数调用方法
May 08 #Javascript
You might like
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
php利用header函数下载各种文件
2016/08/24 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
java script编程起步(第三课)
2007/01/10 Javascript
[原创]保存的js无法执行的解决办法
2007/02/25 Javascript
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
Javascript实现的类似Google的Div拖动效果代码
2011/08/09 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
2015/12/02 Javascript
jquery实现网站列表切换效果的2种方法
2016/08/12 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
2019/08/27 Python
Python实现Restful API的例子
2019/08/31 Python
Python内置类型性能分析过程实例
2020/01/29 Python
Expected conditions模块使用方法汇总代码解析
2020/08/13 Python
python 写一个文件分发小程序
2020/12/05 Python
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
zooplus意大利:在线宠物商店
2019/08/07 全球购物
在阿联酋购买翻新手机和平板电脑:Teckzu
2021/02/12 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
如何写好优秀的创业计划书
2014/01/30 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
技术入股合作协议书
2014/10/07 职场文书
2015入党自荐书范文
2015/03/05 职场文书
Python进程间的通信之语法学习
2022/04/11 Python