数组中关于是否包含/查找的常见总结

99 阅读1分钟
  • 常规的查找

    • 1、indexOf

      • api:array.indexOf(item,start)
        • start 可选,表示有效的匹配范围
      • 返回要查找的元素在数组中的位置,如果没找到则返回-1
      • 这个真是个万年好有的及其兼容的方法
          [1,2,3,4].indexOf(ele) >= 0
      
    • 2、includes

      • api:array.includes(item,start)
        • start 可选,表示有效的匹配范围
      • 是否至少找到一个与指定元素匹配的项
      • 返回布尔值,找到返回true,一个都找不到返回false
      • es7 新增方法,特别老的浏览器可以通过pollify解决
          [1,2,3,4].includes(ele)
      
    • 3、注意indexOf和includes在执行时都是使用的全量相等判断符【===】来判断的

          var child={name:'zhangsan'}
          var person1=[{name:'zhangsan'}]
          var preson2=[child]
      
          // 全量相等来判断
          person1.indexOf(child) // -1
          person2.indexOf(child) // 0
      
          person1.includes(child)//false
          person2.includes(child)//true
      
  • 规则性的查找

    • 4、every

      • api:arr.every(callback(element[, index[, array]])[, thisArg])
      • 检测数组的每一项是否都符合要求,都符合返回true,有一项不符合返回false
      • es7 新增方法,特别老的浏览器可以通过pollify解决
        [1,2,3,4,5,6,7].every(item=>item>1)//false
      
    • 5、some

      • api:arr.some(callback(element[, index[, array]])[, thisArg])
      • 检测数组的每一项是否都符合要求,如果有一项符合返回true,都不符合返回false
      • es7 新增方法,特别老的浏览器可以通过pollify解决
        [1,2,3,4,5,6,7].some(item=>item>6)//true