详解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 屏蔽鼠标右键脚本附破解方法
Dec 03 Javascript
基于JQuery实现异步刷新的代码(转载)
Mar 29 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
Aug 24 Javascript
图片轮换效果实现代码(点击按钮停止执行)
Apr 12 Javascript
JavaScript中string对象
Jun 12 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
Apr 28 Javascript
BootStrap按钮标签及基本样式
Nov 23 Javascript
微信小程序 跳转方式总结
Apr 20 Javascript
JavaScript设计模式之建造者模式实例教程
Jul 02 Javascript
JS实现将二维数组转为json格式字符串操作示例
Jul 12 Javascript
使用 node.js 模仿 Apache 小部分功能
Jul 07 Javascript
vue h5移动端禁止缩放代码
Oct 28 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
PHP开发过程中常用函数收藏
2009/12/14 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
js图片自动切换效果处理代码
2013/05/07 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
基于jquery异步传输json数据格式实例代码
2013/11/23 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
jquery处理json对象
2014/11/03 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
vue better scroll 无法滚动的解决方法
2018/06/07 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
对于Python的框架中一些会话程序的管理
2015/04/20 Python
pygame播放音乐的方法
2015/05/19 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python语言描述最大连续子序列和
2017/12/05 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
Java程序员面试题
2013/07/15 面试题
小学教师管理制度
2014/01/18 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
学习十八大报告感言
2014/02/28 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server