find()
找到第一个之后不再继续找了,找不到就是undefined
例:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>find和findindex</title> </head> <body> <script type="text/javascript"> let ary = [{ class: 1, name: '张三' }, { class: 2, name: '李四' }, { class: 3, name: '李四' }, ]; // find用来查找第一个出现的数据,如果找不到就会返回undefined let target = ary.find((item,index)=>item.name=== '李四') /* let target=ary.find(function(item,index){ // es6以下语法 return item.name=== '李四' }) */ console.log(target); </script> </body> </html>
效果:
let target = ary.find((item,index)=>item.name=== '李四111') //undefined
效果:
indexof与findindex的区别
indexOf ()
找到这个参数所在的索引,采用 === 比较,一般是用于查找基本类型,如果是对象类型,则是判断是否是同一个对象的引用.找到就返回元素位置,找不到就返回-1
先看个indexof的例子:
let ary = [1, 5, 10, 15, 20, 30]; //0, 1, 2, 3, 4, 5 let target = ary.indexOf(30) // let target = ary.indexOf(2) //-1 console.log(target); //5
findIndex()
findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1,多用于非基本类型(例如对象)的数组索引查找,或查找条件很复杂
看段代码:
let a = [1, 5,8, 15,30,50]; let index = a.findIndex((value, index) => value > 7); // let index=a.findIndex(function(b, index){ // return b > 7; // }) console.log(index); // 2
共同点:都是用来查找回调函数。
不同点:indexof主要用于查找基本数据类型 ,findIndex()可以用于查找复杂数据类型
includes()
判断某个数组是否包含给定的值,返回布尔值。
例如:查找这个数组中有没有存在某一个数,如果有返回true,如果没有返回false
var ages = [3, 10, 18, 20]; console.log(ages.includes(3));//true
some()
语法:
array.some(function(currentValue,index,arr),thisValue)
参数 描述
function(currentValue, index,arr)
必须。函数,数组中的每个元素都会执行这个函数 函数参数:。
参数描述currentValue必须。当前元素的值index可选。
当前元素的索引值arr可选。当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。 如果省略了 thisValue ,"this" 的值为 "undefined"
some() 方法用于检测数组中的元素是否满足指定条件(函数提供),会依次执行数组的每个元素:
查找checkAdult这个方法中是否满足大于21的这个条件,如果有,返回true;如果没有,返回false 。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>some()</title> </head> <body> <div id="demo"> </div> <script> var ages = [3, 10, 18, 20]; function checkAdult(age) { return age >= 21; } function myFunction() { document.getElementById("demo").innerHTML = ages.some(checkAdult); //false } myFunction() </script> </body> </html>
效果:
注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组。