Array.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 đối tượng Array trả về chỉ mục đầu tiên mà tại đó một phần tử nhất định có thể được tìm thấy trong mảng, hoặc -1 nếu không có mặt.
Try it
const beasts = ["ant", "bison", "camel", "duck", "bison"];
console.log(beasts.indexOf("bison"));
// Expected output: 1
// Start from index 2
console.log(beasts.indexOf("bison", 2));
// Expected output: 4
console.log(beasts.indexOf("giraffe"));
// Expected output: -1
Cú pháp
indexOf(searchElement)
indexOf(searchElement, fromIndex)
Tham số
searchElement-
Phần tử cần tìm trong mảng.
fromIndexOptional-
Chỉ mục (dựa trên 0) để bắt đầu tìm kiếm, được chuyển đổi thành số nguyên.
- Chỉ mục âm đếm ngược từ cuối mảng — nếu
-array.length <= fromIndex < 0, sẽ dùngfromIndex + array.length. Lưu ý, mảng vẫn được tìm kiếm từ đầu đến cuối trong trường hợp này. - Nếu
fromIndex < -array.lengthhoặcfromIndexbị bỏ qua, sẽ dùng0, khiến toàn bộ mảng được tìm kiếm. - Nếu
fromIndex >= array.length, mảng sẽ không được tìm kiếm và trả về-1.
- Chỉ mục âm đếm ngược từ cuối mảng — nếu
Giá trị trả về
Chỉ mục đầu tiên của searchElement trong mảng; -1 nếu không tìm thấy.
Mô tả
Phương thức indexOf() so sánh searchElement với các phần tử của mảng bằng đẳng thức nghiêm ngặt (cùng thuật toán với toán tử ===). Các giá trị NaN không bao giờ được so sánh bằng nhau, nên indexOf() luôn trả về -1 khi searchElement là NaN.
Phương thức indexOf() bỏ qua các ô trống trong mảng thưa.
Phương thức indexOf() là phương thức tổng quát. Nó chỉ yêu cầu giá trị this có thuộc tính length và các thuộc tính có khóa là số nguyên.
Ví dụ
>Sử dụng indexOf()
Ví dụ sau sử dụng indexOf() để tìm vị trí các giá trị trong mảng.
const array = [2, 9, 9];
array.indexOf(2); // 0
array.indexOf(7); // -1
array.indexOf(9, 2); // 2
array.indexOf(2, -1); // -1
array.indexOf(2, -3); // 0
Bạn không thể dùng indexOf() để tìm kiếm NaN.
const array = [NaN];
array.indexOf(NaN); // -1
Tìm tất cả các lần xuất hiện của một phần tử
const indices = [];
const array = ["a", "b", "a", "c", "a", "d"];
const element = "a";
let idx = array.indexOf(element);
while (idx !== -1) {
indices.push(idx);
idx = array.indexOf(element, idx + 1);
}
console.log(indices);
// [0, 2, 4]
Kiểm tra xem phần tử có tồn tại trong mảng không và cập nhật mảng
function updateVegetablesCollection(veggies, veggie) {
if (veggies.indexOf(veggie) === -1) {
veggies.push(veggie);
console.log(`New veggies collection is: ${veggies}`);
} else {
console.log(`${veggie} already exists in the veggies collection.`);
}
}
const veggies = ["potato", "tomato", "chillies", "green-pepper"];
updateVegetablesCollection(veggies, "spinach");
// New veggies collection is: potato,tomato,chillies,green-pepper,spinach
updateVegetablesCollection(veggies, "spinach");
// spinach already exists in the veggies collection.
Sử dụng indexOf() trên mảng thưa
Bạn không thể dùng indexOf() để tìm kiếm các ô trống trong mảng thưa.
console.log([1, , 3].indexOf(undefined)); // -1
Gọi indexOf() trên đối tượng không phải mảng
Phương thức indexOf() đọc thuộc tính length của this và sau đó truy cập từng thuộc tính có khóa là số nguyên không âm nhỏ hơn length.
const arrayLike = {
length: 3,
0: 2,
1: 3,
2: 4,
3: 5, // ignored by indexOf() since length is 3
};
console.log(Array.prototype.indexOf.call(arrayLike, 2));
// 0
console.log(Array.prototype.indexOf.call(arrayLike, 5));
// -1
Thông số kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-array.prototype.indexof> |