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