Kiểm tra mảng có phải là số liền kề không

Các bác cho e hỏi là làm cách nào để kiểm tra 1 mảng có phải là số liên tiếp không bằng javascript thì làm như thế nào ạ? Ví dụ như mảng gồm các phần tử 1, 3, 4, 5 thì nó sẽ cho alert là “các số không liền kề nhau” chẳng hạn. Em cảm ơn

Vậy chỉ cần xem a[i] - 1 == a[i] không là được :))

return arr.every((el,index) => index == 0 || el - 1 = arr[index - 1]);
3 Likes

bác làm hẳn 1 cái ví dụ đơn giản được không chứ e ngu quá chưa ngộ ra =)))

Đơn giản hơn thì là thế này :))

function check(arr)
{
   for(let i = 1; i < arr.lengt; i++)
   {
      if(arr[i] - 1 != arr[i-1]) return false;
   }
   return true;
}
3 Likes

còn TH số giảm dần nữa bạn ơi.
@Tap_code
Bài này đơn giản mà. Bạn tự nghĩ cách code đi chứ xin code hại thân lắm. Code sai thì hỏi mn chỉ cho đúng lại cho. Bài này dùng 1 vòng for chạy kiểm tra lần lượt từng số. Chỉ cần check số sau hơn hoặc kém số đằng trước 1 đơn vị. Muốn biết check hơn hay check kém thì kiểm tra 2 số đầu tiên là biết rồi.

4 Likes

cái này e biết bác ạ =))) quên ko nói rõ ý e muốn hỏi. e muốn là nó duyệt 1 lần từ đầu đến cuối của mảng xong mới đưa ra thông báo. E làm như bác bảo rồi nhưng mà cứ duyệt 1 lần nó hiện 1 cái thông báo thì không phải ý e muốn

Chỉ dùng if để kiểm tra trường hợp KHÔNG HỢP LỆ. Nếu bạn dùng thêm else cho if thì nó in ra ngay khi chạy phần tử đầu tiên rồi còn gì.

3 Likes

Thế thì bạn phải đưa code lên đây mọi người mới chỉ cho chỗ sai được chứ :))

3 Likes

Đây code của e đại khái nó như thế này:

for (var i = 0; i < arr.length; i++) {
     if (arr[i+1] - 1 === arr[i]) {
alert("khong lien ke");
} else {
alert("lien ke");
}
}

Nhưng làm như thế này thì nó xuất hiện vài thông báo. Ý e thì đang muốn là nếu mảng là [1,2,3,4,6] thì sẽ chỉ hiện ra 1 thông báo là KHONG LIEN KE. còn nếu mảng là [1,2,3,4,5] thì sẽ hiện thông báo liền kề

Bạn mới check có 1 vị trí chứ đã đi hết cả mảng đâu mà đã thông báo rồi ?

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?