一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
我们有了数组中元素的插入,删除,替换的方法。那么假如需要找某个数组中有没有出现,要怎么办呢。
var arr = ['a','b','c']
var a = 'a'
var b = false
for(var i == 0, i < arr.length; i++){
if(arr[i] == a){
b = true
}
}
console.log(b) //true
用for 的方法当然可以,但是有没有可以直接调用的方法呢。
- IndexOf() 方法,这个方法可以传递两个参数。第一个参数是,要查找的元素;第二个参数是,从数组的那个下标位置开始查找。如果第二个参数不传的时候,会默认从数组头部(0)开始查找。
var arr = ['a','b','c']
console.log(arr.indexOf('b')) //1
- lastIndexOf() 方法,这个方法可以传递两个参数。第一个参数是,要查找的元素;第二个参数是,从数组的那个下标位置开始查找,如果第二个参数不传的时候,会默认从数组末尾开始查找。
var arr = ['a','b','c']
console.log(arr.lastIndexOf('b')) //1
indexOf() 和 lastIndexOf() 方法都是返回的元素在数组中所在的下标位置,假如元素没有在数组中,那么则会返回 -1
var arr = ['a','b','c']
console.log(arr.indexOf('1')) //-1
注意,这里假如我们数组中的元素是数字类型元素(比如:1),二要查找的是字符串类型元素(比如:'1'),那么使用indexOf() 和 lastIndexOf() 方法查找出来的结果 都是-1 ,没有
var arr = [1,2,3,4]
console.log(arr.indexOf('1')) //-1
console.log(arr.lastIndexOf('1')) //-1
- find() 这个方法接收一个判断函数,返回第一个满足判断的原始值。如果我们要查找的是数组内对象中的某个值。find() 方法可以方便使用。
var arr = [{age:1,name:'a'},{age:1,name:'b'},{age:2,name:'c'}]
var arr2 = arr.find(function(item){
item.age == 1
})
console.log(arr2) //{age:1,name:'a'}
- findIndex() 方法与find()使用方法一样。但一样的是它返回的是元素的下标位置
var arr = [{age:1,name:'a'},{age:1,name:'b'},{age:2,name:'c'}]
var arr2 = arr.find(function(item){
item.age == 1
})
console.log(arr2) //0
注意,
- find() 和 findIndex() 方法在没找到元素的时候都是返回 undefined
- find() 和 findIndex() 方法在空数组 [] 的时候都是不会执行的