工作中常用到的JS 数组方法 5

55 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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 的方法当然可以,但是有没有可以直接调用的方法呢。

  1. IndexOf() 方法,这个方法可以传递两个参数。第一个参数是,要查找的元素;第二个参数是,从数组的那个下标位置开始查找。如果第二个参数不传的时候,会默认从数组头部(0)开始查找。

var arr = ['a','b','c']

 
 console.log(arr.indexOf('b')) //1


  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 = [1234]

 
 console.log(arr.indexOf('1')) //-1
 console.log(arr.lastIndexOf('1')) //-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'}



  1. 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() 方法在空数组 [] 的时候都是不会执行的