2011-12-21 37 views
12

tôi đang học Javascript và không hiểu lý do tại sao indexOf dưới đây trả về -1:Tại sao IndexOf trở lại -1?

var string = "The quick brown fox jumps over the lazy dog"; 

console.log (string.indexOf("good")); 

Trả lời

18

-1 có nghĩa là "không tìm thấy kết quả phù hợp".

Lý do trả về -1 thay vì "sai" là kim ở đầu chuỗi sẽ ở vị trí 0, tương đương với false trong Javascript. Vì vậy, trở về -1 đảm bảo rằng bạn biết không thực sự là một trận đấu.

+0

Đó là những gì tôi đang tìm kiếm. Cảm ơn. –

8

-1 có nghĩa là không phù hợp được tìm thấy. "tốt" không có trong câu đó. Đây là documentedbehaviour.

Phương thức indexOf() trả về chỉ mục đầu tiên có thể tìm thấy phần tử đã cho trong mảng hoặc -1 nếu không có.

7

Do mảng dựa trên 0, trả về 0 có nghĩa là bắt đầu từ ký tự đầu tiên được khớp; 1, ký tự thứ hai, v.v. Điều này có nghĩa là bất cứ điều gì 0 và lên sẽ là một phản ứng đúng hoặc "tìm thấy". Để giữ mọi thứ trong danh mục số nguyên, -1 biểu thị không tìm thấy kết quả phù hợp.

1

Có một lý do khác để indexOf trả về -1 khi không tìm thấy kết quả phù hợp. Hãy xem xét các đoạn mã sau:

if (~str.indexOf(pattern)){ 
    console.log('found') 
}else{ 
    console.log('not found') 
} 

Bởi vì ~ (-1) = 0 nên thực tế là indexOf trở về -1 làm cho nó dễ dàng hơn để viết if ... else sử dụng ~.

Các vấn đề liên quan