자바스크립트에서 Currying을 사용하여 함수의 실행 결과를 어떻게 필터링할 수 있나요?

함수의 실행 결과를 필터링하려면 Currying을 사용하여 인자를 받은 후 일부 로직을 활용하여 원하는 결과를 얻을 수 있습니다. 예를 들어, 다음과 같은 Currying 함수를 작성해보겠습니다.

function filterByValue(value) {
  return function (array) {
    return array.filter(item => item === value);
  };
}

위의 코드에서 filterByValue 함수는 value를 인자로 받는 함수를 반환합니다. 반환된 함수는 array를 인자로 받아 value와 동일한 값을 가진 요소들만 필터링하여 반환합니다.

이제 아래 예제를 통해 filterByValue 함수를 사용하는 방법을 알아보겠습니다.

const numbers = [1, 2, 3, 4, 5];
const filterWithValue = filterByValue(3);
const filteredArray = filterWithValue(numbers);

console.log(filteredArray); // [3]

위의 예제에서 filterByValue 함수에 value로 3을 전달하여 filterWithValue 함수를 반환받았습니다. 그리고 filterWithValue 함수에 numbers 배열을 인자로 전달하여 filteredArray를 얻었습니다. filteredArray는 3과 동일한 값을 가진 [3] 배열이 됩니다.

Currying을 사용하면 함수의 실행 결과를 필터링하거나 다른 로직을 적용하는 등의 유연한 동작을 구현할 수 있습니다.