详解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 相关文章推荐
IE和Firefox下javascript的兼容写法小结
Dec 10 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
May 07 Javascript
JavaScript将页面表格导出为Excel的具体实现
Dec 27 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
Jan 11 Javascript
Javascript数组与字典用法分析
Dec 13 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
Nov 03 Javascript
微信小程序 视图容器组件的详解及实例代码
Jan 19 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
Apr 16 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
Jul 17 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
Jul 12 Javascript
JS模拟浏览器实现全局搜索功能
Sep 11 Javascript
Vue + ts实现轮播插件的示例
Nov 10 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应用中使用XOR运算加密算法分享
2011/08/28 PHP
php中session使用示例
2014/03/29 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
菜鸟javascript基础整理1
2010/12/06 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
JS弹出窗口代码大全(详细整理)
2012/12/21 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
预防网页挂马的方法总结
2016/11/03 Javascript
深入理解AngularJS中的ng-bind-html指令
2017/03/27 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
2018/10/31 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
pandas数据处理基础之筛选指定行或者指定列的数据
2018/05/03 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
全球虚拟主机商:HostGator
2017/02/06 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
中英双版中文教师求职信
2013/10/27 职场文书
项目副经理岗位职责
2013/12/30 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
农村党员对照检查材料
2014/09/24 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
贪污检举信范文
2015/03/02 职场文书
部门经理助理岗位职责
2015/04/13 职场文书
2015学校年度工作总结
2015/05/11 职场文书