Saya bingung antara perbedaan antara dua fungsi indexOf dan menemukan Indeks dalam sebuah array.
Dokumentasinya mengatakan
findIndex - Mengembalikan indeks elemen pertama dalam larik di mana predikatnya benar, dan -1 jika tidak.
dan
indexOf - Mengembalikan indeks kemunculan pertama dari nilai dalam array.
javascript
Rahul Singh
sumber
sumber
Jawaban:
Perbedaan utamanya adalah parameter dari fungsi-fungsi ini:
Array.prototype.indexOf()
mengharapkan nilai sebagai parameter pertama. Ini menjadikannya pilihan yang baik untuk menemukan indeks dalam array tipe primitif (seperti string, angka, atau boolean).Array.prototype.findIndex()
mengharapkan callback sebagai parameter pertama. Gunakan ini jika Anda memerlukan indeks dalam array dengan tipe non-primitif (misalnya objek) atau kondisi pencarian Anda lebih kompleks dari sekedar nilai.Lihat tautan untuk contoh kedua kasus.
sumber
indexOf
akan bekerja untuk menemukan objek. Penting untuk mendapatkan perbedaan bahwa ia menerima satu Objek, bukan hanya nilai, dan membandingkannya dengan persamaan bukan nilai. Per dokumen Mozilla:indexOf() compares searchElement to elements of the Array using strict equality (the same method used by the === or triple-equals operator).
Harap ubahfindIndex
penjelasan untuk hanya menyertakan "atau kondisi temuan Anda lebih kompleks daripada hanya satu nilai atau referensi" untuk memperbaikinya karena awalnya menyesatkan saya. Terima kasih![{a:1}].indexOf({a:1})
mengembalikan-1
meskipun objeknya tampak sama (tetapi sebenarnya tidak). Tidak yakin apakah informasi ini membantu dalam jawaban karena mungkin membingungkan. Jika Anda perlu mengetahui lebih banyak tentang perilaku bahasa yang tepat, Anda harus membaca spesifikasinya..indexOf(NaN)
akan selalu kembali-1
karenaNaN==NaN
selalufalse
.NaN
adalah tipe primitif karenatypeof NaN
adanumber
dan begitu juganull
danundefined
, jadi saya akan mengubah ini untuk menghindari mengatakanindexOf
karya pada tipe primitifFindIndex berguna jika Anda ingin menemukan elemen pertama yang sesuai dengan predikat Anda: Dalam contoh W3C, terdapat angka dan kecocokan jika usia pelanggan di atas atau sama dengan 18.
menghibur:
Anda dapat menemukan indeks elemen yang tepat dengan fungsi indexOf dari Array, tetapi Anda tidak dapat memberikan predikat. Lebih cepat jika Anda ingin menemukan elemen tertentu:
kembali:
Penghitungan indeks dimulai dari 0, jadi indeks elemen pertama adalah 0.
sumber
Perbedaan utamanya adalah parameter dari fungsi-fungsi ini:
-> Array.prototype.indexOf () :
-> Array.prototype.findIndex () :
sumber
Anda juga bisa menggunakan
includes
:tapi saya lebih suka
indexOf
metode:sumber
indexOf
jauh lebih cepat juga.Perbedaan lainnya adalah dengan findIndex () pengguna dapat menerapkan beberapa fungsi dan menemukan elemen dalam larik yang lolos pengujian.
Tetapi hal yang sama tidak berlaku dengan operator indexOf () . Seorang pengguna dapat memeriksa apakah elemen tertentu ada dalam array atau tidak.
sumber
Sederhana - Jenis struktur array apa yang Anda gunakan?
findIndex()
,;indexOf()
,."Saya ingin mencari indeks dalam array objek , dengan kunci" Oranye ".
"Saya ingin mencari indeks dalam array sederhana ".
sumber
Anda dapat mencoba kode di bawah ini: -
sumber