- Array.indexOf && Array.find
对于 indexOf MDN文档中描述为:返回数组中给定元素的第一次出现的索引,如不存在返回 -1;在此无需赘述,提起indexOf 不得不说一道比较经典的面试题,废话不说上代码
let Arr = [1,2,3,4,5,6,7,8,9,1,1,1,2,3,3,4,5,6,7,7,87,8]
let noRepeat = [];
Arr.forEach( (item, index) => {
if(noRepeat.indexOf(item) === -1){
noRepeat.push(item)
}
})
Array.find与indexOf 的区别就是 find可以处理对象数组 ,Array.find 的参数为一个回调函数
let Arr = [{a:1},{b:2}]
Arr.find( (item) => {
if(item.a){
return item
}
}) // {a:1}
- Array.includes && Array.some
其实includes 和indexOf 比较相似,只不过indexOf 返回的是索引,而includes 则是单纯的返回bool值,因此includes这个方法初衷就是单纯的看数组中是否有无 某个元素,includes 仅仅适用与简单的数组,如果数组元素是个对象,那样可以用 Array.some来进行判断 上代码
let Arr = [{a:1},{b:2}]
Arr.some( (item) => {
if(item.a){
return item
}
}) // true
- Array.filter
Array.filter是一个十分有用的方法,日常工作中我们常常会用到,它可以通过回调函数来对愿数组进行过滤,返回值为过滤后的数组 ,上代码
let Arr = [{id: 1},{id: 2},{id: 1},{id: 3},{id: 1},{id: 1}] //过滤掉id 为1 的元素
let FilterArr = Arr.filter( (item) => {
if(item.id !== 1){
return item
}
})
- reduce 关于reduce 上一篇文章已经讲过了 有兴趣的可以看一下上一篇的reduce的应用小例子。