배열에 100, 101, 102처럼 이어지는 연속된 숫자가 포함되어 있는지 확인하려면 reduce() 메서드를 활용하면 됩니다. 배열의 모든 요소가 연속된 숫자라면 true를 반환하고, 하나라도 끊기면 false를 반환합니다.
예제 코드
const sequceIsConsecutive = (obj) =>
Boolean(obj.reduce((output, lastest) => (output ?
(Number(output.number) + 1 === Number(lastest.number) ? lastest : false)
: false)));
console.log("Is Consecutive=" + sequceIsConsecutive([
{ number: '100' },
{ number: '101' },
{ number: '102' }
]));
console.log("Is Consecutive=" + sequceIsConsecutive([
{ number: '100' },
{ number: '102' },
{ number: '104' }
]));
프로그램 실행 방법
위 프로그램을 실행하려면 터미널에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo126.js라고 가정합니다.
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
PS C:\Users\Amit\JavaScript-code> node demo126.js Is Consecutive=true Is Consecutive=false
코드 동작 원리
reduce()는 배열의 요소를 처음부터 끝까지 순회하며 누적값(output)과 현재 요소(lastest)를 비교합니다. 이전 요소의 number 값에 1을 더한 값이 현재 요소의 number 값과 일치하면 연속된 것으로 판단하고, 중간에 한 번이라도 불일치하면 이후 모든 단계에서 false가 전달됩니다. 최종 결과는 Boolean()으로 감싸 명확하게 true 또는 false로 변환됩니다.
첫 번째 배열은 100 → 101 → 102로 숫자가 1씩 증가하므로 true가 출력되고, 두 번째 배열은 100 → 102 → 104처럼 2씩 건너뛰기 때문에 false가 출력됩니다.