Skip to content

Commit

Permalink
챕터12 : 노예찬 (#66)
Browse files Browse the repository at this point in the history
  • Loading branch information
noy3928 authored Nov 16, 2024
1 parent eb9bdea commit dbf4505
Showing 1 changed file with 70 additions and 0 deletions.
70 changes: 70 additions & 0 deletions 챕터_12/노예찬.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
12장에서는 함수형에서 사용하는 가장 대표적인 도구 3가지를 살펴본다. map, filter, reduce이다. 이 3가지 도구를 언제 사용하며, 어떻게 만들어져있는지, 어떤 유익이 있는지 이해한다.

## 함수형 도구 : map()

```js
function map(array, f) {
var newArray = [];
forEach(array, function (element) {
newArray.push(f(element));
});
return newArray;
}
```

- map은 x값이 있는 배열을 y값이 있는 배열로 변환한다고 볼 수 있다. 변환을 하려면 x를 y로 바꾸는 함수가 필요하다.
- 근데 만약 map에 넘기는 콜백이 액션이면, map을 사용하는 코드도 액션이 된다.

## 함수형 도구 : filter()

```js
function filter(array, f) {
var newArray = [];
forEach(array, function (element) {
if (f(element)) newArray.push(element);
});
return newArray;
}
```

- filter는 배열에서 일부 항목을 선택하는 함수로 볼 수 있다.
- 항목을 선택하기 위해서 x를 받아 불리언 타입을 리턴하는 함수를 전달해야 한다. true면 항목을 유지하고, false면 항목을 없앤다.

사용 :

```js
filter(customers, function (customer) {
return customer.purchases.length === 0;
});
```

## 함수형 도구 : reduce()

```js
function reduce(array, init, f) {
var accum = init;
forEach(array, function (element) {
accum = f(accum, element);
});
return accum;
}
```

- reduce는 배열을 순회하면서 값을 누적한다. 값을 누적하는 것은 추상적인 개념이다.
- 주의해야 할 점은 인자의 순서다.

```js
function min(numbers) {
return reduce(numbers, Number.MAX_VALUE, function (m, n) {
if (m < n) return m;
else return n;
});
}

function max(numbers) {
return reduce(numbers, Number.MIN_VALUE, function (m, n) {
if (m > n) return m;
else return n;
});
}
```

0 comments on commit dbf4505

Please sign in to comment.