Là khá mới đối với JavaScript, tôi không thể nhận ra khi nào nên sử dụng từng loại này.
Bất cứ ai có thể giúp làm rõ điều này cho tôi?
Là khá mới đối với JavaScript, tôi không thể nhận ra khi nào nên sử dụng từng loại này.
Bất cứ ai có thể giúp làm rõ điều này cho tôi?
Câu trả lời:
Nếu bạn yêu cầu một biểu thức chính quy, sử dụng search()
. Nếu không, indexOf()
sẽ nhanh hơn.
search
sẽ đánh giá một chuỗi thành regex ngay cả khi bạn không muốn.
Hàm tìm kiếm ( một mô tả ở đây ) có một biểu thức chính quy, cho phép bạn khớp với các patters phức tạp hơn, các chuỗi không phân biệt chữ hoa chữ thường, v.v., trong khi indexOf ( một mô tả ở đây ) chỉ khớp với một chuỗi ký tự. Tuy nhiên, indexOf cũng cho phép bạn chỉ định một chỉ mục bắt đầu.
IndexOf () - nó chấp nhận chuỗi ký tự hoặc các đối tượng chuỗi nhưng không phải là biểu thức chính quy. Nó cũng chấp nhận giá trị nguyên dựa trên số 0 để bắt đầu tìm kiếm từ đó, ví dụ:
Tìm kiếm () - chấp nhận cả chuỗi ký tự hoặc đối tượng chuỗi và biểu thức chính quy. Nhưng nó không chấp nhận một chỉ mục để bắt đầu tìm kiếm từ đó.
"baby/e/lephant".indexOf(m);
gì?
indexOf () và tìm kiếm ()
chung ở cả hai
i) trả lại lần xuất hiện đầu tiên của giá trị tìm kiếm
ii) trả về -1 nếu không tìm thấy kết quả khớp
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8
đặc biệt trong indexOf ()
i) bạn có thể đưa ra vị trí tìm kiếm bắt đầu như một đối số thứ hai
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position)
giá trị tìm kiếm có thể là biểu thức chính quy
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
Không có regex , không có sự khác biệt thực tế giữa indexOf và tìm kiếm .
Ví dụ dưới đây cho một bản demo trực tiếp :
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
chuyển đổi một chuỗi thành một RegExp
, ví dụ, str.search("d........e");
cũng sẽ khớp với ký tự 39.