详解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 日期转换成中文格式的函数
Jul 07 Javascript
js trim函数 去空格函数与正则集锦
Nov 20 Javascript
JavaScript DOM 学习第二章 编辑文本
Feb 19 Javascript
学习面向对象之面向对象的术语
Nov 30 Javascript
JavaScript中__proto__与prototype的关系深入理解
Dec 04 Javascript
每天一篇javascript学习小结(Array数组)
Nov 11 Javascript
js实现prototype扩展的方法(字符串,日期,数组扩展)
Jan 14 Javascript
jQuery Chart图表制作组件Highcharts用法详解
Jun 01 Javascript
AngularJS Phonecat实例讲解
Nov 21 Javascript
基于Vue实现支持按周切换的日历
Sep 24 Javascript
js实现扫雷小程序的示例代码
Sep 27 Javascript
ES6中异步对象Promise用法详解
Jul 31 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 和 MySQL 时区的一点总结
2008/03/26 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
BOOM vs RR BO5 第三场 2.14
2021/03/10 DOTA
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
没有document.getElementByName方法
2013/08/19 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
jQuery表单插件ajaxForm实例详解
2017/01/17 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
js中json对象和字符串的理解及相互转化操作实现方法
2017/09/22 Javascript
JS写谷歌浏览器chrome的外挂实例
2018/01/11 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
python实现保存网页到本地示例
2014/03/16 Python
wxPython事件驱动实例详解
2014/09/28 Python
python操作gmail实例
2015/01/14 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
Roxy俄罗斯官方网站:冲浪和滑雪板的一切
2020/06/20 全球购物
美德少年事迹材料
2014/01/23 职场文书
九年级语文教学反思
2014/02/04 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
2014年团支书工作总结
2014/11/14 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
初三语文教学计划
2015/01/22 职场文书
情况说明书怎么写
2015/10/08 职场文书
党章学习心得体会2016
2016/01/14 职场文书
2016廉洁从政心得体会
2016/01/19 职场文书