详解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 相关文章推荐
表单的一些基本用法与技巧
Jul 15 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
Dec 11 Javascript
jquery重复提交请求的原因浅析
May 23 Javascript
搭建pomelo 开发环境
Jun 24 Javascript
angular简介和其特点介绍
Jan 29 Javascript
JavaScript获取数组最小值和最大值的方法
Jun 09 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
BootStrap的table表头固定tbody滚动的实例代码
Aug 24 Javascript
微信小程序自定义组件components(代码详解)
Oct 21 Javascript
使用Karma做vue组件单元测试的实现
Jan 16 Javascript
React生命周期原理与用法踩坑笔记
Apr 28 Javascript
在vue项目中 实现定义全局变量 全局函数操作
Oct 26 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 cli 方式 在crotab中运行解决
2010/02/08 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
2014/06/17 PHP
2014最热门的24个php类库汇总
2014/12/18 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
javascript基础第一章 JavaScript与用户端
2010/07/22 Javascript
扩展javascript的Date方法实现代码(prototype)
2010/11/20 Javascript
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
jquery实现动态菜单的实例代码
2013/11/28 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
基于jquery实现表格内容筛选功能实例解析
2016/05/09 Javascript
js小数计算小数点后显示多位小数的实现方法
2016/05/30 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
Bootstrap DateTime Picker日历控件简单应用
2017/03/25 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
vxe-table vue table 表格组件功能
2019/05/26 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
[09:40]DAC2018 4.5 SOLO赛 MidOne vs Miracle
2018/04/06 DOTA
python实现mysql的单引号字符串过滤方法
2015/11/14 Python
python实现八大排序算法(2)
2017/09/14 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Python 实现两个列表里元素对应相乘的方法
2018/11/14 Python
对python for 文件指定行读写操作详解
2018/12/29 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
详解python内置模块urllib
2020/09/09 Python
Python基于内置函数type创建新类型
2020/10/22 Python
详解HTML5布局和HTML5标签
2020/10/26 HTML / CSS
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android