方法一:indexOf(item,start)
Item:要查找的值;
start:可选的整数参数,缺省则从起始位子开始查找。
indexOf()
返回元素在数组中的位置,如果没有则返回-1,该方法只能查找字符串,数字等,不能查找 类
或者 数组
或者 NaN
,如果想 查找 类 或者 数组,可以使用下面介绍的其他方法;
var arr = ['a','b','c','d'];
console.log(arr.indexOf('b')); // 1
console.log(arr.indexOf('ab')); // -1
// 一般情况下判断元素是否存在
if(arr.indexOf('查找的元素') > -1){
// 元素存在
}
方法二:arr.find()
arr.find()
的参数是一个回调函数,数组内所有元素会遍历这个回调函数,直到找到第一个返回值为true的元素,然后返回该元素,否则返回undefined。
find()
数组中的每一个元素都会调用一次函数,但是当条件返回true时,find()
返回符合条件的元素的位置,之后的值不会再调用函数。
var tt = {
"id": 2,
"name": "test",
};
var arr = [
{
"id": 1,
"name": "test",
},
{
"id": 2,
"name": "test",
},
{
"id": 3,
"name": "test",
}
];
var a=arr.find(function(value,index,arr){
return value['id'] == tt['id'] && value['name'] == tt['name']
});
console.log(a);//{id: 2, name: "test"}, 注意:这里返回的不是true,而是返回值为true的这个元素;
方法三:array.findIndex()
findIndex()
和 find()
的用法相似,find()
返回的是元素,findIndex()
返回的是第一个符合条件的数组元素的位置,如果所有元素都不符合条件则返回-1
。
findIndex()
数组中的每一个元素都会调用一次函数,但是当条件返回true时,findIndex()
返回符合条件的元素的位置,之后的值不会再调用函数。
for()
或forEach()
的方法就不讲了,遍历后if判断就行