String.prototype.indexOf()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức indexOf() của các giá trị String tìm kiếm string này và trả về chỉ mục của lần xuất hiện đầu tiên của substring được chỉ định. Nó nhận một vị trí bắt đầu tùy chọn và trả về lần xuất hiện đầu tiên của substring được chỉ định tại một chỉ mục lớn hơn hoặc bằng số được chỉ định.
Try it
const paragraph = "I think Ruth's dog is cuter than your dog!";
const searchTerm = "dog";
const indexOfFirst = paragraph.indexOf(searchTerm);
console.log(`The index of the first "${searchTerm}" is ${indexOfFirst}`);
// Expected output: "The index of the first "dog" is 15"
console.log(
`The index of the second "${searchTerm}" is ${paragraph.indexOf(
searchTerm,
indexOfFirst + 1,
)}`,
);
// Expected output: "The index of the second "dog" is 38"
Cú pháp
indexOf(searchString)
indexOf(searchString, position)
Tham số
searchString-
Substring cần tìm. Tất cả các giá trị đều được ép kiểu thành string, vì vậy bỏ qua hoặc truyền
undefinedkhiếnindexOf()tìm kiếm string"undefined", điều này hiếm khi bạn muốn. positionOptional-
Phương thức trả về chỉ mục của lần xuất hiện đầu tiên của substring được chỉ định tại vị trí lớn hơn hoặc bằng
position, mặc định là0. Nếupositionlớn hơn độ dài của string gọi, phương thức không tìm kiếm string gọi chút nào. Nếupositionnhỏ hơn 0, phương thức hoạt động như thểpositionlà0.-
'hello world hello'.indexOf('o', -5)trả về4— vì nó khiến phương thức hoạt động như thể đối số thứ hai là0, và lần xuất hiện đầu tiên củaotại vị trí lớn hơn hoặc bằng0là tại vị trí4. -
'hello world hello'.indexOf('world', 12)trả về-1— vì, trong khi đúng là substringworldxuất hiện tại chỉ mục6, vị trí đó không lớn hơn hoặc bằng12. -
'hello world hello'.indexOf('o', 99)trả về-1— vì99lớn hơn độ dài củahello world hello, khiến phương thức không tìm kiếm string chút nào.
-
Giá trị trả về
Chỉ mục của lần xuất hiện đầu tiên của searchString được tìm thấy, hoặc -1 nếu không tìm thấy.
Giá trị trả về khi sử dụng search string rỗng
Tìm kiếm một search string rỗng tạo ra kết quả kỳ lạ. Không có đối số thứ hai, hoặc với đối số thứ hai có giá trị nhỏ hơn độ dài string gọi, giá trị trả về bằng với giá trị của đối số thứ hai:
"hello world".indexOf(""); // returns 0
"hello world".indexOf("", 0); // returns 0
"hello world".indexOf("", 3); // returns 3
"hello world".indexOf("", 8); // returns 8
Tuy nhiên, với đối số thứ hai có giá trị lớn hơn hoặc bằng độ dài string, giá trị trả về là độ dài string:
"hello world".indexOf("", 11); // returns 11
"hello world".indexOf("", 13); // returns 11
"hello world".indexOf("", 22); // returns 11
Trong trường hợp trước, phương thức hoạt động như thể nó tìm thấy một string rỗng ngay sau vị trí được chỉ định trong đối số thứ hai. Trong trường hợp sau, phương thức hoạt động như thể nó tìm thấy một string rỗng ở cuối string gọi.
Mô tả
Các string được đánh chỉ mục từ 0: Chỉ mục của ký tự đầu tiên của string là 0, và chỉ mục của ký tự cuối cùng là độ dài string trừ 1.
"Blue Whale".indexOf("Blue"); // returns 0
"Blue Whale".indexOf("Wale"); // returns -1
"Blue Whale".indexOf("Whale", 0); // returns 5
"Blue Whale".indexOf("Whale", 5); // returns 5
"Blue Whale".indexOf("Whale", 7); // returns -1
"Blue Whale".indexOf(""); // returns 0
"Blue Whale".indexOf("", 9); // returns 9
"Blue Whale".indexOf("", 10); // returns 10
"Blue Whale".indexOf("", 11); // returns 10
Phương thức indexOf() phân biệt chữ hoa chữ thường. Ví dụ, biểu thức sau trả về -1:
"Blue Whale".indexOf("blue"); // returns -1
Kiểm tra sự xuất hiện
Khi kiểm tra xem một substring cụ thể có xuất hiện trong string hay không, cách đúng để kiểm tra là xem giá trị trả về có phải là -1 không:
"Blue Whale".indexOf("Blue") !== -1; // true; found 'Blue' in 'Blue Whale'
"Blue Whale".indexOf("Wale") !== -1; // false; no 'Wale' in 'Blue Whale'
Ví dụ
>Sử dụng indexOf()
Ví dụ sau sử dụng indexOf() để định vị các substring trong string "Brave new world".
const str = "Brave new world";
console.log(str.indexOf("w")); // 8
console.log(str.indexOf("new")); // 6
indexOf() và phân biệt chữ hoa chữ thường
Ví dụ sau định nghĩa hai biến string.
Các biến chứa cùng một string, ngoại trừ string thứ hai chứa chữ hoa. Phương thức console.log() đầu tiên hiển thị 19. Nhưng vì phương thức indexOf() phân biệt chữ hoa chữ thường, string "cheddar" không được tìm thấy trong myCapString, vì vậy phương thức console.log() thứ hai hiển thị -1.
const myString = "brie, pepper jack, cheddar";
const myCapString = "Brie, Pepper Jack, Cheddar";
console.log(myString.indexOf("cheddar")); // 19
console.log(myCapString.indexOf("cheddar")); // -1
Sử dụng indexOf() để đếm số lần xuất hiện của một chữ cái trong string
Ví dụ sau đặt count là số lần xuất hiện của chữ cái e trong string str:
const str = "To be, or not to be, that is the question.";
let count = 0;
let position = str.indexOf("e");
while (position !== -1) {
count++;
position = str.indexOf("e", position + 1);
}
console.log(count); // 4
Đặc tả
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-string.prototype.indexof> |