Rate this post

indexOf() trong javascript là một method của đối tượng String và Array, nó dùng để tìm vị trí của một phần tử hoặc chuỗi trong một mảng hoặc chuỗi. Nếu phần tử hoặc chuỗi đó không tồn tại trong mảng hoặc chuỗi, nó sẽ trả về giá trị -1.

Ví dụ:

let fruits = ["Banana", "Orange", "Apple", "Mango"];

let a = fruits.indexOf("Apple");

console.log(a) // output 2

Trong ví dụ trên, hàm indexOf() sẽ tìm vị trí của chuỗi “Apple” trong mảng “fruits”, và trả về 2.

Vì sao nên sử dụng indexOf() ?

Sử dụng indexOf() trong javascript giúp cho việc tìm kiếm một giá trị trong một mảng hoặc chuỗi trở nên dễ dàng hơn. Nó có thể giúp bạn xác định xem một giá trị có tồn tại trong mảng hay chuỗi hay không và nếu có, nó sẽ trả về vị trí của giá trị đó.

Ví dụ, nếu bạn muốn kiểm tra xem một tên có tồn tại trong danh sách đã có hoặc không, bạn có thể sử dụng indexOf() để xác định tên đó có trong danh sách hay không. Nó cũng có thể giúp bạn xóa hoặc thay thế một phần tử trong mảng một cách dễ dàng.

Các method như indexOf(), findIndex, includes, … có thể giúp cho việc tìm kiếm trong mảng hoặc chuỗi trở nên dễ dàng hơn và tăng hiệu suất của chương trình.

Sử dụng indexOf() trong javascript như thế nào ?

Sử dụng indexOf() trong javascript rất đơn giản, chúng ta chỉ cần gọi method này trên đối tượng mảng hoặc chuỗi và truyền giá trị cần tìm vào để kiểm tra. Khi sử dụng với mảng, nó sẽ tìm vị trí của phần tử trong mảng. Khi sử dụng với chuỗi, nó sẽ tìm vị trí của chuỗi con trong chuỗi gốc.

indexof với chuỗi

Phương thức indexOf() cũng có thể được sử dụng để tìm kiếm vị trí của một chuỗi con trong một chuỗi chính. Cú pháp của indexOf() cho chuỗi là:

string.indexOf(searchValue[, fromIndex])
  • string: Chuỗi mà bạn muốn tìm kiếm.
  • searchValue: Chuỗi con bạn muốn tìm kiếm trong chuỗi chính.
  • fromIndex (tùy chọn): Chỉ định vị trí bắt đầu tìm kiếm trong chuỗi chính. Nếu không xác định, nó sẽ bắt đầu từ đầu chuỗi. Nếu fromIndex là một số âm, tìm kiếm sẽ bắt đầu từ cuối chuỗi.

Dưới đây là một ví dụ:

const sentence = "This is an example sentence.";

// Tìm vị trí của từ "example" trong chuỗi
const index1 = sentence.indexOf("example");
console.log(index1); // Output: 11 (vì "example" bắt đầu từ vị trí thứ 11 trong chuỗi)

// Tìm vị trí của từ "notfound" (không tồn tại) trong chuỗi
const index2 = sentence.indexOf("notfound");
console.log(index2); // Output: -1 (vì "notfound" không tồn tại trong chuỗi)

// Tìm vị trí của từ "is" bắt đầu từ vị trí thứ 3 trong chuỗi
const index3 = sentence.indexOf("is", 3);
console.log(index3); // Output: 5 (vì "is" xuất hiện ở vị trí thứ 5 sau vị trí thứ 3)

Nếu bạn muốn tìm kiếm chuỗi con trong chuỗi và không quan tâm đến sự phân biệt chữ hoa chữ thường, bạn có thể chuyển cả hai chuỗi thành chữ hoa hoặc chữ thường trước khi tìm kiếm để tránh sự không tương thích về kiểu chữ.

indexof với mảng

Trong JavaScript, phương thức indexOf() cũng có thể được sử dụng để tìm kiếm vị trí của một phần tử trong một mảng. Dưới đây là cú pháp của indexOf() cho mảng:

array.indexOf(searchElement[, fromIndex])

  • array: Mảng mà bạn muốn tìm kiếm.
  • searchElement: Phần tử bạn muốn tìm kiếm trong mảng.
  • fromIndex (tùy chọn): Chỉ định vị trí bắt đầu tìm kiếm trong mảng. Nếu không xác định, nó sẽ bắt đầu từ đầu mảng. Nếu fromIndex là một số âm, tìm kiếm sẽ bắt đầu từ cuối mảng.

Phương thức indexOf() sẽ trả về vị trí của phần tử nếu nó được tìm thấy trong mảng, hoặc trả về -1 nếu phần tử không tồn tại trong mảng.

Dưới đây là một ví dụ:

const numbers = [1, 2, 3, 4, 5];

// Tìm vị trí của số 3 trong mảng
const index1 = numbers.indexOf(3);
console.log(index1); // Output: 2 (vị trí của số 3 trong mảng là 2, vị trí đếm từ 0)

// Tìm vị trí của số 6 (không tồn tại) trong mảng
const index2 = numbers.indexOf(6);
console.log(index2); // Output: -1 (vì số 6 không tồn tại trong mảng)

// Tìm vị trí của số 2 bắt đầu từ vị trí thứ 3 trong mảng
const index3 = numbers.indexOf(2, 3);
console.log(index3); // Output: -1 (vì số 2 không xuất hiện sau vị trí thứ 3 trong mảng)

Hãy lưu ý rằng indexOf() chỉ tìm kiếm phần tử đầu tiên có giá trị trùng khớp trong mảng. Nếu bạn muốn tìm tất cả các vị trí của một phần tử trong mảng, bạn có thể viết một hàm tùy chỉnh để thực hiện điều này.

Ví dụ:

let fruits = ["Banana", "Orange", "Apple", "Mango"];

let a = fruits.indexOf("Apple");

console.log(a) // output 2

let sentence = "The quick brown fox";

let b = sentence.indexOf("fox");

console.log(b) // output 16

Trong ví dụ trên, hàm indexOf() được gọi trên mảng và chuỗi, và trả về vị trí của phần tử hoặc chuỗi con trong mảng hoặc chuỗi gốc.

Chú ý: indexOf() method chỉ tìm kiếm theo vị trí đầu tiên của phần tử hoặc chuỗi. Nếu muốn tìm tất cả các vị trí của phần tử hoặc chuỗi, bạn có thể sử dụng vòng lặp và gọi indexOf() trong vòng lặp.

Khi nào nên sử dụng indexOf() ?

Khi bạn muốn tìm kiếm vị trí của một phần tử trong một mảng hoặc chuỗi, bạn có thể sử dụng hàm indexOf() trong javascript. Hàm này sẽ trả về vị trí của phần tử đầu tiên trong mảng hoặc chuỗi mà khớp với giá trị mà bạn truyền vào. Nếu không tìm thấy phần tử đó, hàm sẽ trả về giá trị -1. Ví dụ, muốn tìm vị trí của số 7 trong mảng [1,2,3,4,5,6,7,8,9], bạn có thể sử dụng indexOf(7) và nó sẽ trả về giá trị 6 (vị trí của 7 trong mảng).

Một số sai lầm thường mắc phải khi sử dụng indexOf() trong javascript bao gồm:

  • Chưa chuyển kiểu dữ liệu: Khi so sánh hai giá trị khác kiểu, chúng ta cần phải chuyển đổi chúng sang cùng một kiểu dữ liệu để so sánh. Nếu không, kết quả của hàm indexOf() có thể không chính xác.
  • Viết sai tên hàm: Viết sai tên hàm sẽ dẫn đến lỗi ReferenceError.
  • Quên truyền tham số cho hàm: nếu quên truyền tham số cho hàm, hàm sẽ trả về -1 hoặc lỗi TypeError.
  • Chỉ sử dụng hàm indexOf() với chuỗi, nếu sử dụng với mảng hoặc đối tượng có thể sẽ bị lỗi.

Ví dụ cụ thể về các trường hợp sử dụng indexOf() trong javascript.

Một vài ví dụ thường gặp khi sử dụng indexOf() trong JavaScript là:

  1. Tìm vị trí xuất hiện đầu tiên của một chuỗi con trong một chuỗi:
let sentence = "The quick brown fox jumps over the lazy dog.";

let word = "fox";

let index = sentence.indexOf(word);

console.log(index); // Output: 16

  1. Kiểm tra xem một giá trị có trong mảng hay không:
let colors = ["red", "green", "blue"];

let colorToCheck = "green";

let index = colors.indexOf(colorToCheck);

if(index !== -1){

    console.log(colorToCheck + " is present in the array.");

} else {

    console.log(colorToCheck + " is not present in the array.");

}

  1. Tìm vị trí xuất hiện cuối cùng của một chuỗi con trong một chuỗi:
let sentence = "The quick brown fox jumps over the lazy fox.";

let word = "fox";

let index = sentence.lastIndexOf(word);

console.log(index); // Output: 35

  1. Tìm kiếm trong một mảng theo điều kiện và lấy vị trí:
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];

let numberToFind = 5;

let index = numbers.findIndex(function(element) {

    return element === numberToFind;

});

console.log(index);  // Output: 4

  1. Tìm kiếm vị trí của tất cả các phần tử trong mảng:
let array = [1, 2, 3, 4, 5, 3, 6, 3];

let result = [];

let search = 3;

let i = array.indexOf(search);

while (i != -1) {

  result.push(i);

  i = array.indexOf(search, i + 1);

}

console.log(result); // Output: [2, 5, 7]

  1. Tìm kiếm vị trí của một chuỗi con trong mảng các chuỗi:
let array = ["abc", "def", "ghi", "jkl"];

let search = "de";

let result = array.map((str, index) => {

  if (str.indexOf(search) !== -1) {

    return index;

  }

}).filter(i => i !== undefined);

console.log(result); // Output: [1]

  1. Tìm kiếm vị trí của phần tử trong một mảng đa chiều:
let array = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

let search = 6;

let result = [];

array.forEach((subArray, i) => {

  let j = subArray.indexOf(search);

  if (j !== -1) {

    result.push([i, j]);

  }

});

console.log(result); // Output: [[1, 2]]

Chúng ta có thể sử dụng indexOf() để tìm kiếm một phần tử trong mảng, chuỗi hoặc mảng đa chiều với các cấu trúc logic và một số ví dụ nâng cao khác.

Kết luận

IndexOf() là một hàm cần thiết trong Javascript để tìm kiếm vị trí đầu tiên của một chuỗi con trong một chuỗi cha. Nó rất hữu ích trong việc xử lý dữ liệu và xác định vị trí của các phần tử trong một mảng. 

Tuy nhiên, bạn cần chú ý đến việc sử dụng indexOf() trong một mảng có giá trị null hoặc undefined, vì nó có thể gây ra lỗi.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now