Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 배열에서 시퀀스 형성

<시간/>

연속된 숫자를 가질 수 있는 이와 같이 정렬된 숫자 배열이 있다고 가정합니다.

const arr = [1, 2, 3, 5, 7, 8, 9, 11];

그러한 배열을 취하는 JavaScript 함수를 작성해야 합니다.

우리의 함수는 이 배열에 대한 시퀀스를 형성해야 합니다. 시퀀스는 배열의 모든 연속 요소에 대해 시작 및 끝 숫자를 작성하고 그 사이의 숫자를 대시(-)로 바꾸고 다른 모든 숫자는 변경하지 않은 상태로 유지해야 합니다.

따라서 위의 배열의 경우 출력은 다음과 같아야 합니다. -

const output = '1-3,5,7-9,11';

예시

이에 대한 코드는 -

const arr = [1, 2, 3, 5, 7, 8, 9, 11];
const buildSequence = (arr = []) => {
   let pointer;
   return arr.reduce((acc, val, ind) => {
      if (val + 1 === arr[++ind]) {
         if (pointer == null ) {
            pointer = val;
         };
         return acc;
      };
      if (pointer) {
         acc.push(`${pointer}-${val}`);
         pointer = null;
         return acc;
      }
      acc.push(val);
      return acc;
   }, []).join(',');
}
console.log(buildSequence(arr));

출력

콘솔의 출력은 -

1-3,5,7-9,11