详解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获取当前网址、主机地址项目根路径
Nov 19 Javascript
json的定义、标准格式及json字符串检验
May 11 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
Sep 01 Javascript
jQuery实现的支持IE的html滑动条
Mar 16 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
Nov 30 Javascript
AngularJS的Filter的示例详解
Mar 07 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
Mar 07 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
Jan 12 Javascript
实例解析Vue.js下载方式及基本概念
May 11 Javascript
微信小程序 网络通信实现详解
Jul 23 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
Sep 10 Javascript
微信小程序修改checkbox的样式代码实例
Jan 21 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
smarty实例教程
2006/11/19 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
浅谈php fopen下载远程文件的函数
2016/11/18 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
JavaScript中的原型prototype属性使用详解
2015/06/05 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
canvas绘制多边形
2017/02/24 Javascript
vue基于两个计算属性实现选中和全选功能示例
2019/02/08 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
Python远程视频监控程序的实例代码
2019/05/05 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
Python列表与元组的异同详解
2019/07/02 Python
python实现网站用户名密码自动登录功能
2019/08/09 Python
Pycharm 字体大小调整设置的方法实现
2019/09/27 Python
关于Numpy数据类型对象(dtype)使用详解
2019/11/27 Python
python写一个随机点名软件的实例
2019/11/28 Python
python中entry用法讲解
2020/12/04 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
家佳咖啡店创业计划书
2013/12/27 职场文书
暑期社会实践方案
2014/02/05 职场文书
护士自我鉴定总结
2014/03/24 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android