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);