详解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 相关文章推荐
js中Image对象以及对其预加载处理示例
Nov 20 Javascript
JavaScript简介
Feb 15 Javascript
JS鼠标拖拽实例分析
Nov 23 Javascript
javascript实现自动填写表单实例简析
Dec 02 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
js 定义对象数组(结合)多维数组方法
Jul 27 Javascript
Bootstrap基本组件学习笔记之进度条(15)
Dec 08 Javascript
JavaScript闭包和范围实例详解
Dec 19 Javascript
vue2.0实战之基础入门(1)
Mar 27 Javascript
用vue封装插件并发布到npm的方法步骤
Oct 18 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
Jun 28 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
Aug 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
VOLVO车载收音机
2021/03/02 无线电
php实现12306余票查询、价格查询示例
2014/04/17 PHP
php浏览历史记录的方法
2015/03/10 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
利用JS判断用户是否上网(连接网络)
2013/12/23 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
使用JavaScript刷新网页的方法
2015/06/04 Javascript
JS排序方法(sort,bubble,select,insert)代码汇总
2016/01/30 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
详解网站中图片日常使用以及优化手法
2017/01/09 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
tensorflow识别自己手写数字
2018/03/14 Python
详解Python 数据库的Connection、Cursor两大对象
2018/06/25 Python
Python3 修改默认环境的方法
2019/02/16 Python
Python使用matplotlib 画矩形的三种方式分析
2019/10/31 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
Python中import导入不同目录的模块方法详解
2020/02/18 Python
python实现ftp文件传输功能
2020/03/20 Python
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
电大学习个人自我评价范文
2013/10/04 职场文书
电子信息工程自荐信
2014/05/26 职场文书
综合管理员岗位职责
2015/02/11 职场文书
三八妇女节致辞
2015/07/31 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
Python标准库pathlib操作目录和文件
2021/11/20 Python
Windows Server 2022 超融合部署(图文教程)
2022/06/25 Servers