Menjadi cukup baru untuk JavaScript, saya tidak dapat membedakan kapan harus menggunakan masing-masing.
Adakah yang bisa membantu menjelaskan ini untuk saya?
Menjadi cukup baru untuk JavaScript, saya tidak dapat membedakan kapan harus menggunakan masing-masing.
Adakah yang bisa membantu menjelaskan ini untuk saya?
Jawaban:
Jika Anda memerlukan ekspresi reguler, gunakan search()
. Kalau tidak, indexOf()
akan lebih cepat.
search
akan mengevaluasi string menjadi regex bahkan jika Anda tidak mau.
Fungsi pencarian ( satu deskripsi di sini ) mengambil ekspresi reguler, yang memungkinkan Anda untuk mencocokkan dengan patters yang lebih canggih, string case-insensitive, dll., Sementara indexOf ( satu deskripsi di sini ) cukup cocok dengan string literal. Namun, indexOf juga memungkinkan Anda menentukan indeks awal.
IndexOf () - ia menerima string literal atau objek string tetapi bukan ekspresi reguler. Ia juga menerima nilai integer berbasis nol untuk memulai pencariannya, misalnya:
Search () - menerima string literal atau objek string dan ekspresi reguler. Tetapi tidak menerima indeks untuk memulai pencarian.
"baby/e/lephant".indexOf(m);
?
indexOf () dan search ()
umum di keduanya
i) mengembalikan kemunculan pertama dari nilai yang dicari
ii) return -1 jika tidak ditemukan kecocokan
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8
spesial di indexOf ()
i) Anda dapat memberikan posisi pencarian awal sebagai argumen kedua
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position)
nilai pencarian dapat berupa ekspresi reguler
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
Tanpa regex , tidak ada perbedaan praktis antara indexOf dan pencarian .
Contoh di bawah ini memberikan demo langsung :
function FromSearch() {
var str = document.getElementById("demo").innerText;
var n = str.search("difference");
document.getElementById("Location").innerHTML = n;
}
function FromindexOf() {
var str = document.getElementById("demo").innerText;
var n = str.indexOf("difference");
document.getElementById("Location").innerHTML = n;
}
<p id="demo">Without a <a href='http://www.w3schools.com/js/js_regexp.asp'>regex</a>, there is no practical difference between <a href='http://www.w3schools.com/jsref/jsref_indexof.asp'>indexOf</a> and <a href='http://www.w3schools.com/jsref/jsref_search.asp'>search</a>
</p>
<button onclick="FromSearch()">From search</button>
<button onclick="FromindexOf()">From indexOf</button>
<p>Location of difference in the above sentence is:</p>
<mark id="Location"></mark>
search
mengubah string menjadi RegExp
, jadi misalnya, str.search("d........e");
juga akan cocok dengan karakter 39.