我对两个函数indexOf和在数组中查找索引之间的差异感到困惑。
文档上说
返回数组中第一个元素的索引 Predicate为true,否则为-1。
and
类中某个值第一次出现的索引 数组中。
我对两个函数indexOf和在数组中查找索引之间的差异感到困惑。
文档上说
返回数组中第一个元素的索引 Predicate为true,否则为-1。
and
类中某个值第一次出现的索引 数组中。
当前回答
你也可以使用includes:
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
但我更喜欢indexOf方法:
var vals = [ "foo", "bar", 42, "baz" ];
if (~vals.indexOf( 42 )) {
// found it!
}
其他回答
另一个区别是 使用findIndex(),用户可以应用一些函数并找到数组中通过测试的元素。
但indexOf()操作符并非如此。 用户可以检查特定元素是否存在于数组中。
主要的区别是这些函数的参数:
-> Array.prototype.indexOf ():
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");
The result of a will be: 2
- > Array.prototype.findIndex ():
var ages = [3, 10, 18, 20];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
document.getElementById("demo").innerHTML =
ages.findIndex(checkAdult);
}
The result will be: 2
它们之间的主要区别是:
findIndex()方法得到一个这样的回调函数:
var x = [1,2,3];
x.findIndex(x=> x==3); //returns 2
但是indexOf函数得到的值是这样的:
x.indexOf(3); // returns 2;
如果你试图将一个回调函数传递给indexOf,它的返回值是-1;
x.indexOf(x => x==3); //returns -1
如果试图将value传递给findIndex,它将返回一个错误:
x.findIndex(3); //Uncaught TypeError: 3 is not a function at Array.findIndex (<anonymous>) at <anonymous>:1:3
你可以试试下面的代码:-
let city = ['Delhi', 'mumbai']
const a = city.findIndex((item) =>
item.toLowerCase()==='delhi')
console.log(a) // returns 0
let c = city.indexOf('mumbai') // returns 1
console.log(c)
你也可以使用includes:
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
但我更喜欢indexOf方法:
var vals = [ "foo", "bar", 42, "baz" ];
if (~vals.indexOf( 42 )) {
// found it!
}