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

JavaScript의 연속 숫자 합계

<시간/>

예를 들어, 배열을 가져와서 연속된 유사한 숫자를 더한 다른 배열을 반환하는 함수를 작성해야 한다고 가정해 보겠습니다.

예를 들어 -

const array = [1, 5, 5, 5, 8, 8, 9, 1, 4, 4, 2];

출력은 다음과 같아야 합니다. -

[1, 15, 16, 9, 1, 8, 2]

모든 연속적인 5를 더하면 최대 15가 된 다음 2개의 연속 8을 더하면 최대 16이 되고 마찬가지로 4를 더하면 최대 8이 됩니다.

따라서 이 함수에 대한 코드를 작성해 보겠습니다. 여기에서 Array.prototype.reduce() 메서드를 사용하여 원래 배열을 줄이는 동시에 새 배열을 구성합니다.

예시

const array = [1, 5, 5, 5, 8, 8, 9, 1, 4, 4, 2];
const sumConsecutive = (array) => {
   return array.reduce((acc, val) => {
      if (acc.last === val) {
         acc.arr[acc.arr.length - 1] += val;
      } else {
         acc.arr.push(val);
         acc.last = val;
      }
      return acc;
   }, { arr: [], last: undefined }).arr;
};
console.log(sumConsecutive(array));

출력

콘솔의 출력은 다음과 같습니다. -

[
   1, 15, 16, 9,
   1, 8, 2
]