예를 들어 Numbers와 number n의 배열을 취하는 함수를 작성해야 한다고 가정해 보겠습니다. 여기서 n>=배열의 임의의 수입니다. 배열의 연속적인 요소의 합이 숫자 n을 초과하는 경우 이 함수는 배열을 하위 배열로 분할하는 데 필요합니다.
예를 들어 -
// if the original array is: const arr = [2, 1, 2, 1, 1, 1, 1, 1]; // and the number n is 4 // then the output array should be: const output = [ [ 2, 1 ], [ 2, 1, 1 ], [ 1, 1, 1 ] ];
이 함수의 코드를 작성해 봅시다 -
예시
const arr = [2, 1, 2, 1, 1, 1, 1, 1]; const splitArray = (arr, num) => { return arr.reduce((acc, val, ind) => { let { sum, res } = acc; if(ind === 0){ return {sum: val, res:[[val]]}; }; if(sum + val <= num){ res[res.length-1].push(val); sum +=val; }else{ res.push([val]); sum = val; }; return { sum, res }; }, { sum: 0, res: [] }).res; }; console.log(splitArray(arr, 4)); console.log(splitArray(arr, 5));
출력
콘솔의 출력은 다음과 같습니다. -
[ [ 2, 1 ], [ 2, 1, 1 ], [ 1, 1, 1 ] ] [ [ 2, 1, 2 ], [ 1, 1, 1, 1, 1 ] ]