소개
이 랩에서는 제공된 함수를 기반으로 배열 요소를 그룹 해제하는 방법을 살펴봅니다. zip() 함수로 생성된 배열을 가져와 제공된 함수를 적용하여 요소를 그룹 해제하는 unzipWith() 함수를 사용합니다. 이 랩을 마치면 배열을 조작하고 요소에 대한 사용자 지정 작업을 수행하는 방법에 대한 이해도가 높아질 것입니다.
이 랩에서는 제공된 함수를 기반으로 배열 요소를 그룹 해제하는 방법을 살펴봅니다. zip() 함수로 생성된 배열을 가져와 제공된 함수를 적용하여 요소를 그룹 해제하는 unzipWith() 함수를 사용합니다. 이 랩을 마치면 배열을 조작하고 요소에 대한 사용자 지정 작업을 수행하는 방법에 대한 이해도가 높아질 것입니다.
zip으로 생성된 배열의 요소를 그룹 해제하고 함수를 적용해야 하는 경우 unzipWith를 사용할 수 있습니다. 구현 방법은 다음과 같습니다.
Math.max()와 스프레드 연산자 (...) 를 사용하여 배열에서 가장 긴 하위 배열을 가져오고 Array.prototype.map()을 사용하여 각 요소를 배열로 만듭니다.Array.prototype.reduce()와 Array.prototype.forEach()를 사용하여 그룹화된 값을 개별 배열에 매핑합니다.Array.prototype.map()과 스프레드 연산자 (...) 를 사용하여 fn을 각 개별 요소 그룹에 적용합니다.const unzipWith = (arr, fn) =>
arr
.reduce(
(acc, val) => (val.forEach((v, i) => acc[i].push(v)), acc),
Array.from({
length: Math.max(...arr.map((x) => x.length))
}).map((x) => [])
)
.map((val) => fn(...val));
unzipWith를 사용하려면 터미널/SSH 를 열고 node를 입력합니다. 그런 다음 다음 예제를 실행할 수 있습니다.
unzipWith(
[
[1, 10, 100],
[2, 20, 200]
],
(...args) => args.reduce((acc, v) => acc + v, 0)
);
// [3, 30, 300]
이렇게 하면 zip으로 생성된 입력 배열의 요소를 그룹 해제하고 제공된 함수를 적용하여 요소의 배열이 생성됩니다.
축하합니다! 함수 기반으로 배열 요소 그룹 해제 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.