# 判断数组中是否包含某个值
# indexof()
如果存在,则返回数组元素的下标,否则返回-1。
参数:item为查找的值,start为开始位置,lastIndexOf()则是从末尾开始查找。
var arr = [1,2,3,4];
var index = arr.indexOf(3);
console.log(index);
# includes()
Array.prototype.includes
方法返回一个布尔值,如果存在返回true,否则返回false,与字符串的includes
方法类似。
该方法的第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。
[1, 2, 3].includes(2) // true
[1, 2, 3].includes(4) // false
[1, 2, NaN].includes(NaN) // true
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
# find()
返回数组中满足条件的第一个元素的值,如果没有,返回undefined
let a = [1, 2, 3, 4, 5, 6, 7, 8, 9];
a.find(n => n > 5) // 6
a.find(function(value, index, arr) {
return value > 9;
}) // undefined
# findIndex()
返回数组中满足条件的第一个元素的下标,如果没有找到,返回-1]
[1, 5, 10, 15].findIndex(function(value, index, arr) {
return value > 9;
}) // 2
// 这两个方法都可以接受第二个参数,用来绑定回调函数的this对象。
function f(v){
return v > this.age;
}
let person = {name: 'John', age: 20};
[10, 12, 26, 15].find(f, person); // 26
上面的代码中,find
函数接收了第二个参数person
对象,回调函数中的this
对象指向person
对象。