在前端开发中,ES6的使用越来越广泛。现在老K为大家总结一下ES6中数组的新方法。
map方法:
可以简单的理解为映射
var arr = [1,2,3,4]console.log( arr.map((n)=>n*n) ); //[1,4,9,16]console.log( arr.map((n)=>n-1) );//[0,1,2,3]
filter方法:
var users = [{name:'张三', email:'zhang@email.com'},{name:'李四', email:'li@email.com'},{name:'王五',email:'wang@email.com'}];//获取所有人的emailvar emails = users.map( item => item.email )console.log(emails.join(',')) //"zhang@email.com","li@email.com","wang@email.com"//获取指定人的emailvar wangEmail = emails.filter(email => /^wang/.test(email))console.log(wangEmail.join('')) //"wang@email.com"
获取用户列表里的所有用户的email,可以用map方法。map方法通过传一个参数,这个参数就代表users里的每一项,map内部通过遍历所有的用户项,获取到每个用户项的email,再push到一个数组,再作为值给我们返回。第二步,我们需要获取指定人的email,filter方法登场了,通过过滤筛选数组emails,给我们返回结果,筛选方法得我们定,这里筛选方法是以正则匹配到wang开头的那一个email,然后返回。
find方法:
[1, 4, -1, 10].find(n => n < 0) // -1
find方法比较好理解,这里的参数n代表数组里的每一项,然后find方法内部通过遍历数组里的每一项,找到<0的这一项( -1 )。
findIndex方法:
findIndex方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组。看一个例子:
[1, 3, -5, 11].findIndex((value,index,arr) => value < 0) //2
在这个例子当中,value代表这个数组的每一项,1,3,-5,11。index代表每一项的索引值,arr代表这个数组[1, 3, -5, 11],然后我们需要返回的是<0的这一项的索引值,即是2了。
这4个方法内部机制都有一个遍历过程,比起forEach确实简洁多了。
every方法:
let numbers = [2, 4, 10, 4, 8];let a = numbers.every( (item,index) => { if(item%2 === 0){ return true }else{ return false }} )console.log(a) //true
every()方法必须所有都返回true才会返回true,哪怕有一个false,就会返回false。
some方法:
let numbers = [2, 4, 10, 4, 9];let b=numbers.some((item,index) => { if(item%3 === 0){ return true }else{ return false }})console.log(b) //true
some方法 只要其中一个为true 就会返回true的。
every()和 some()目的:确定数组的所有成员是否满足指定的条件。
本文为原创内容,若转载请注明出处,转发感激不尽。