1.find():
find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。
find() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined
注意: find() 对于空数组,函数是不会执行的。
注意: find() 并没有改变数组的原始值。
我遇到的问题是:find()方法是直接return值,如果要在控制台输出,还需要通过赋给一个变量输出,如果是赋值给某个HTML元素,直接赋值即可
var arr = [1, 3, 5, 4, 12, 18, ]
//item:数组元素
//index:索引
var target = arr.find((item, index) => {
return item > 5
})
console.log(target) //12
2.findIndex():
findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。
findIndex() 方法为数组中的每个元素都调用一次函数执行:
当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 -1
注意: findIndex() 对于空数组,函数是不会执行的。
注意: findIndex() 并没有改变数组的原始值。
findIndex()和find()类似,只不过返回的是索引值
var arr = [1, 3, 5, 4, 12, 18, ]
var target = arr.findIndex((item, index) => {
return item > 5
})
console.log(target) //4
3.indexOf():
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1。
注意: indexOf() 方法区分大小写。
官网说是找到匹配的字符串,但是数组也可以,返回数组中第一个符合的元素的索引值,找不到的话返回-1
/* arr.indexOf(item)
item:匹配的值
*/
var arr = [1, 3, 5, 4, 12, 18, ]
var target = arr.indexOf(5)
console.log(target) //2
4.filter()
再补充一个过滤方法
/* filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。 */
var arr1 = [1, 2, 3, 4, 2];
function fn(arr, item) {
var newArr = arr.filter(value => {
return value != item
})
console.log(newArr)
}
fn(arr1, 2) //[1, 3, 4]