详解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 相关文章推荐
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
Nov 27 Javascript
使用Post提交时须将空格转换成加号的解释
Jan 14 Javascript
javascript设计模式之工厂模式示例讲解
Mar 04 Javascript
使表格的标题列可左右拉伸jquery插件封装
Nov 24 Javascript
jQuery插件passwordStrength密码强度指标详解
Jun 24 Javascript
JavaScript Base64 作为文件上传的实例代码解析
Feb 14 Javascript
jQuery表单验证之密码确认
May 22 jQuery
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
May 13 Javascript
JS异步处理的进化史深入讲解
Aug 25 Javascript
vue中使用elementUI组件手动上传图片功能
Dec 13 Javascript
微信小程序实现同时上传多张图片
Feb 03 Javascript
Vue时间轴 vue-light-timeline的用法说明
Oct 29 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
DISCUZ 分页代码
2007/01/02 PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
2007/05/23 PHP
php获取post中的json数据的实现方法
2011/06/08 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
php中多维数组按指定value排序的实现代码
2014/08/19 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
一个可以增加和删除行的table并可编辑表格中内容
2014/06/16 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
jstl中判断list中是否包含某个值的简单方法
2016/10/14 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
使用localStorage替代cookie做本地存储
2019/09/25 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
Python生成随机数的方法
2014/01/14 Python
Python深入学习之装饰器
2014/08/31 Python
Python的条件语句与运算符优先级详解
2015/10/13 Python
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
Sanic框架应用部署方法详解
2018/07/18 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
python-numpy-指数分布实例详解
2019/12/07 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
python 线程的五个状态
2020/09/22 Python
安全生产网格化管理实施方案
2014/03/01 职场文书
联谊会主持词
2014/03/26 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
保留意见审计报告
2015/06/05 职场文书
解决Go gorm踩过的坑
2021/04/30 Golang