2つの関数indexOfの違いと配列内のインデックスの検索で混乱しています。
ドキュメントは言う
findIndex-述語がtrueである配列の最初の要素のインデックスを返し、それ以外の場合は-1を返します。
そして
indexOf-配列内で最初に出現する値のインデックスを返します。
2つの関数indexOfの違いと配列内のインデックスの検索で混乱しています。
ドキュメントは言う
findIndex-述語がtrueである配列の最初の要素のインデックスを返し、それ以外の場合は-1を返します。
そして
indexOf-配列内で最初に出現する値のインデックスを返します。
回答:
主な違いは、これらの関数のパラメーターです。
Array.prototype.indexOf()期待する値を最初のパラメータとして。このため、プリミティブ型(文字列、数値、ブール値など)の配列でインデックスを検索することをお勧めします。
Array.prototype.findIndex()期待していたコールバックを最初のパラメータとして。これは、非プリミティブ型(オブジェクトなど)の配列でインデックスが必要な場合、または検索条件が単なる値よりも複雑な場合に使用します。
両方のケースの例については、リンクを参照してください。
indexOfオブジェクトを見つけるために動作することに注意してください。値だけでなく単一のオブジェクトを受け入れ、値ではなく等価で比較するという区別をつけることが重要です。Mozillaのドキュメントごと: 説明をindexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator). 修正してfindIndex、「または、検索条件が単一の値または参照よりも複雑である」という肢だけを含めて、元々私を混乱させたため、これを修正してください。ありがとう!
[{a:1}].indexOf({a:1})戻ります-1。混乱を招く可能性があるため、この情報が回答に役立つかどうかはわかりません。正確な言語動作について詳しく知る必要がある場合は、仕様を読んでください。
.indexOf(NaN)常に戻ります-1ので、NaN==NaN常にありますfalse。NaN ですので、プリミティブ型がtypeof NaNあるnumberので、あるnullとundefined私は言って避けるために、これを修正しますので、indexOfプリミティブ型に作品を
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です。
主な違いは、これらの関数のパラメーターです。
-> 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();indexOf()。「オブジェクトの配列のインデックスを、「オレンジ」のキーで検索したい。
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.
以下のコードを試すことができます:-
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)