前言
概述
1、
indexOf
方法返回在数组中可以找到一个给定元素的第一个索引(下标),如果不存在,返回-1
。
2、findIndex
方法返回数组中满足提供的测试函数的第一个元素的索引(下标),如果不存在,返回-1
。
indexOf示例
let dataA1 = ['王维', '范仲淹', '欧阳修', '李商隐', '孟浩然'];
console.log(dataA1.indexOf('欧阳修'));
// 2
let dataA2 = [
{ sname: '陶渊明' },
{ sname: '贺知章' }
];
console.log(dataA2.indexOf({ sname: '陶渊明' }));
// -1
let variate = { sname: '岑参' };
console.log([{ sname: '龚自珍' }, variate].indexOf(variate));
// 1
findIndex
let dataArray = [
{
id: 1, sname: '陆游',
alias: '务观',
nickname: '放翁'
},
{
id: 2,
sname: '屈原',
alias: '原',
nickname: null
},
{
id: 3,
sname: '王安石',
alias: '介甫',
nickname: '半山'
}
];
console.log(dataArray[dataArray.findIndex((item) => item.id == 3)]);
// {id: 3, sname: "王安石", alias: "介甫", nickname: "半山"}
// 注意:普通函数写法记得加 return
console.log(dataArray[dataArray.findIndex(function(item) { return item.id == 2; })]);
// {id: 2, sname: "屈原", alias: "原", nickname: null}
indexOf与findIndex的区别
1、
indexOf
:查找值作为第一个参数,采用绝对相等(===)比较,更多的是用于查找基本类型的数据,如果是对象类型,则是判断是否是同一个对象的引用。
2、findIndex
:比较函数作为第一个参数,多用于非基本类型(例如对象)的数组索引查找,或查找条件很复杂。
indexOf与findIndex的相同点
indexOf
与findIndex
都是查找数组中满足条件的第一个元素的索引(下标)。