es6新增数组方法简便了哪些操作?
栏目: JavaScript · 发布时间: 5年前
内容简介:在这里不过多阐述,我也是跟着阮一峰大佬的《es6入门》来学习的,es6新增了很多的方法、属性,让我们在编码中得到了很高的提升,在这里只对array这块进行阐述,其他的就过不多介绍了。言归正传,在项目中,经常会遇到处理数据,筛选数据的要求,我们更多的会借助于上面的是es6之前的处理方法,可以解决问题,但代码量可着实不少啊!在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.find(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.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
等等就不一一列举了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- C语言指针数组和数组指针
- 数组 – 如何在Swift中将数组拆分成两半?
- 菜鸡的算法修炼:数组(旋转数组的最小数字)
- 交换数组元素,使得数组的和的差最小
- JS数组专题1️⃣ ➖ 数组扁平化
- 算法-计算小数组在大数组中的索引
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。