我对两个函数 indexOf 和 find Index in an array 之间的区别感到困惑。
文档说
findIndex - 返回数组中 predicate 为真的第一个元素的索引,否则返回 -1。
和
indexOf - 返回值在数组中第一次出现的索引。
我对两个函数 indexOf 和 find Index in an array 之间的区别感到困惑。
文档说
findIndex - 返回数组中 predicate 为真的第一个元素的索引,否则返回 -1。
和
indexOf - 返回值在数组中第一次出现的索引。
主要区别在于这些函数的参数:
Array.prototype.indexOf()
期望一个值作为第一个参数。这使得在基本类型(如字符串、数字或布尔值)的数组中查找索引是一个不错的选择。
Array.prototype.findIndex()
期望回调作为第一个参数。如果您需要具有非原始类型(例如对象)的数组中的索引,或者您的查找条件比值更复杂,请使用此选项。
有关这两种情况的示例,请参阅链接。
如果要查找与谓词匹配的第一个元素,FindIndex 很有用:在 W3C 的示例中,如果客户的年龄大于或等于 18,则有数字和匹配项。
var ages = [3, 10, 18, 20];
function checkAdult(age) {
return age >= 18;
}
console.log(ages.findIndex(checkAdult));
安慰:
2
您可以使用 Array 的 indexOf 函数找到确切的元素索引,但不能传递谓词。如果要查找特定元素,速度会更快:
var ages = [3, 10, 18, 20];
console.log(ages.indexOf(10));
返回:
1
索引计数从 0 开始,因此第一个元素索引为 0。
简单 - 您使用的是哪种数组结构?
findIndex()
;indexOf()
。“我想在对象数组中找到索引,键为“Orange”。
let fruits = [
{ type: "Apple", quantity: 9 },
{ type: "Banana", quantity: 2},
{ type: "Orange", quantity: 8},
{ type: "Pear", quantity: 777}
];
let myIndex = fruits.findIndex(fruit => fruit.type === "Orange"); // Returns 2.
“我想在一个简单的数组中找到索引”。
let fruits = [ "Apple", "Banana", "Pear", "Orange"];
let index = fruits.indexOf("Orange"); // Returns 3.
另一个区别是使用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