Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Kiểm tra mảng có chứa số liên tiếp (consecutive) trong JavaScript

Dùng reduce() kiểm tra mỗi cặp liền kề có chênh lệch 1 không. Trả về true nếu toàn bộ liên tiếp.

Ví dụ


const isConsecutive = arr => Boolean(
    arr.reduce((acc, curr) => 
        acc !== false && (Number(acc.number) + 1 === Number(curr.number) ? curr : false)
    )
);

// Test
console.log("Liên tiếp:", isConsecutive([{number: '100'},{number: '101'},{number: '102'}])); // true
console.log("Không liên tiếp:", isConsecutive([{number: '100'},{number: '102'},{number: '104'}])); // false

Cách chạy

node demo.js

Kết quả


Liên tiếp: true
Không liên tiếp: false

Giải thích: acc là object trước (nếu hợp lệ) hoặc false. So sánh acc.number + 1 === curr.number. Nếu bất kỳ cặp nào fail, acc thành false lan truyền đến cuối.

Cách đơn giản hơn (mảng số nguyên):


const isConsecutive = arr => 
    arr.every((v, i) => i === 0 || v === arr[i-1] + 1);