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

배열을 복잡한 배열 JavaScript로 변환하는 방법은 무엇입니까?

<시간/>

예를 들어 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 ] ]