JavaScript Reduce 를 사용한 배열 분할

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 JavaScript 를 사용하여 제공된 함수를 기반으로 배열을 분할하는 방법을 살펴봅니다. Array.prototype.reduce() 메서드를 사용하여 분할된 값을 배열에 누적하는 동시에 제공된 함수의 출력 변화를 확인합니다. 이 랩을 마치면 JavaScript 에서 배열을 분할하는 방법에 대한 확실한 이해를 갖게 될 것입니다.

배열 분할 알고리즘

배열을 분할하려면 다음 단계를 따르세요.

  1. 터미널/SSH 를 열고 node를 입력하여 코딩 연습을 시작합니다.
  2. 제공된 함수 fn을 주어진 배열 arr의 각 값에 적용합니다.
  3. fn이 새로운 값을 반환할 때마다 배열을 분할합니다.
  4. Array.prototype.reduce()를 사용하여 결과 배열과 fn에서 반환된 마지막 값을 보유하는 누산기 객체를 생성합니다.
  5. Array.prototype.push()를 사용하여 arr의 각 값을 누산기 배열의 적절한 분할에 추가합니다.
  6. 결과 배열을 반환합니다.

다음은 코드 구현입니다.

const partitionBy = (arr, fn) =>
  arr.reduce(
    ({ res, last }, v, i, a) => {
      const next = fn(v, i, a);
      if (next !== last) res.push([v]);
      else res[res.length - 1].push(v);
      return { res, last: next };
    },
    { res: [] }
  ).res;

사용 예시:

const numbers = [1, 1, 3, 3, 4, 5, 5, 5];
partitionBy(numbers, (n) => n % 2 === 0); // [[1, 1, 3, 3], [4], [5, 5, 5]]
partitionBy(numbers, (n) => n); // [[1, 1], [3, 3], [4], [5, 5, 5]]

요약

축하합니다! 배열 분할 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 실력을 향상시킬 수 있습니다.