- indexOf
该方法返回可以在数组中找到给定元素的第一个索引;如果不存在,则返回-1。
例一:
let arr =[1,2,3];
console.log(arr.indexOf(1));//0
console.log(arr.indexOf(2));//1
console.log(arr.indexOf(3));//2
console.log(arr.indexOf(4));//-1
例二:
let arr1 =[“1”,“2”,“3”];
console.log(arr1.indexOf(“1”));//0
console.log(arr1.indexOf(“2”));//1
console.log(arr1.indexOf(“3”));//2
console.log(arr1.indexOf(“4”));//-1 - findIndex
例一:
返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
const arr = [
{ id: 1 },
{ id: 2 },
{ id: 3 }
];
console.log(arr.findIndex(item => item.id === 1)) // 0
console.log(arr.findIndex(item => item.id === 2)) // 1
console.log(arr.findIndex(item => item.id === 3)) // 2
console.log(arr.findIndex(item => item.id === 4)) // -1
例二:
const rs = require("./readline-sync");
获取用户输入
let inpId = rs.question() - 0;
const arr = [
{ id: 1 },
{ id: 2 },
{ id: 3 }
];
console.log(arr.findIndex(item => item.id === inpId)) // 输入id为1,返回对应的下标0
两者的区别
- indexOf()主要是用于查找基本数据类型。例如===》获取数组中某个元素的下标。
- findIndex可用于查找复杂数据类型。例如===》获取数组里对象的下标。
总结:
indexOf()方法内部使用的是 全等运算符,如果复合数据类型例如数组里对象,全等运算符就会比较它们的内存地址,如果地址相同,等式才会成立。
因此,当遇到基本数据类型就使用indexOf查询在数组当中的下标。遇到复杂数据类型就用findIndex查询数组对象中的下标。