Apa perbedaan antara indexOf() dan pencarian()?

Yang cukup baru untuk JavaScript, I'm dapat membedakan kapan harus menggunakan masing-masing.

Siapapun dapat membantu memperjelas hal ini untuk saya?

Larutan

Jika anda memerlukan sebuah ekspresi reguler, menggunakan pencarian(). Jika tidak, indexOf() akan menjadi lebih cepat.

Komentar (3)

indexOf adalah untuk polos substring, search adalah untuk ekspresi reguler.

Komentar (0)

Fungsi pencarian (satu description here) mengambil ekspresi reguler, yang memungkinkan anda untuk pertandingan melawan lebih canggih patters, case-sensitive string, dll., sementara indexOf (satu description here) hanya pertandingan literal string. Namun, indexOf juga memungkinkan anda untuk menentukan awal indeks.

Komentar (0)

Saya pikir perbedaan utama adalah bahwa pencarian yang menerima ekspresi reguler.

Periksa referensi ini:

Komentar (0)

IndexOf() - menerima string literal atau objek string tapi tidak **** ekspresi reguler. Hal ini juga menerima nol berbasis nilai integer untuk memulai pencarian dari, misalnya:

  1. "babyelephant".indexOf("e"); // memberi anda 4
  2. "babyelephant".indexOf("e",5); // memberi anda 6 sebagai pencarian dimulai dari posisi ke-6 atau ke-5 indeks.
  3. var m= e//;, "babyelephant".indexOf(m); //memberi -1 sebagai it doesnt menerima ekspresi reguler.

Pencarian() - menerima string literal atau objek string dan ekspresi reguler. Tapi itu doesn't menerima sebuah indeks untuk memulai pencarian.

Komentar (2)

indexOf() dan pencarian()

  • baik

i) kembali kejadian pertama dicari nilai

ii) return -1 jika tidak ada yang cocok

mari str='Buku adalah biaya pengiriman' str.indexOf('b') // mengembalikan posisi 8 str.pencarian('b') // mengembalikan posisi 8


  • khusus dalam indexOf()

i) anda dapat memberikan mulai mencari posisi sebagai argumen kedua

str.indexOf('k') // 3 str.indexOf('k',4) // 11 (ia mulai mencari dari posisi ke-4)


  • khusus dalam pencarian()

pencarian nilai dapat menjadi ekspresi reguler

str.search('book') // 8
str.search(/book/i)  // 0   ( /i =case-insensitive   (Book == book)

referensi

Komentar (0)

Pencarian menemukan itu's sesuai dengan ekspresi reguler, tetapi tidak memiliki offset. IndexOf menggunakan literal untuk pertandingan, tetapi telah offset.

IndexOf

Cari

Komentar (1)

Tanpa regex, tidak ada perbedaan praktis antara indexOf dan pencarian.

Di bawah ini contoh memberikan hidup [demo][4]:

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>

From search

From indexOf

<p>Location of difference in the above sentence is:</p>

Komentar (1)