详解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,水平有待提高
Jan 31 Javascript
window.location.hash 使用说明
Nov 08 Javascript
jQuery中需要注意的细节问题小结
Dec 06 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
Javascript 实现简单计算器实例代码
Oct 23 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
jQuery中.attr()和.data()的区别分析
Sep 03 jQuery
微信小程序实现保存图片到相册功能
Nov 30 Javascript
JavaScript中常用的简洁高级技巧总结
Mar 10 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
Sep 11 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
Nov 24 Javascript
一起深入理解js中的事件对象
Feb 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
通过JavaScript或PHP检测Android设备的代码
2011/03/09 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
用js实现计算代码行数的简单方法附代码
2007/08/13 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
2017/05/17 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
每天学点Vue源码之vm.$mount挂载函数
2019/03/11 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
Python实现拼接多张图片的方法
2014/12/01 Python
Python探索之创建二叉树
2017/10/25 Python
python实现kMeans算法
2017/12/21 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
优秀大学生自荐信
2014/06/09 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
红高粱观后感
2015/06/10 职场文书