WEB Front-End/Javascript
JavaScript - for, foreach, filter, map, reduce 기능
hyg4196
2021. 10. 6. 15:44
반응형
자바스크립트에서 map(), filter(), reduce() 메소드는 배열 요소를 나열하거나, 특정 조건에 맞게 보여줄 때 자주 쓰인다.
해당 메소드들의 동작 원리를 알아보고자 해당 메소드들이 for문으로 어떻게 돌아가는지 작성하려 한다.
const listData = [
{
id: 1,
text: 'hello',
},
{
id: 2,
text: 'everyone',
},
{
id: 3,
text: 'welcome',
},
{
id: 4,
text: 'to',
},
{
id: 5,
text: 'my blog',
},
]
공통으로 사용되는 데이터
1. filter
var newArr = arr.filter(function(v, i, arr) {
return condition;
});
filter의 가장 큰 특징은 boolean형태의 return값을 갖는다. return값이 true일경우, 그 요소를 반환하고 false일경우, 반환하지 않는다. 기본값은 false이다. 예를 들어보자.
특징
- 빠른편이다.
- Array객체에서 사용이 가능하다.
- chainable하다.
- 빈 배열 요소를 반환하지 않는다.
- 대용량 배열 처리시 메모리 overflow 가능성이 있다.
- return값은 true/false이며, 요소를 반환한다.
2. map
var newArr = arr.map(function(v, i, arr) {
return condition;
});
filter와 다른점이라고 하면, filter는 return값으로 true/false만 쓸 수 있으며, 요소를 반환하지만, map의 경우 요소가 아닌 새로운 값을 만들어서 return할 수 있다.
특징
- 빠른편이다.
- Array객체에서 사용이 가능하다.
- chainable하다.
- 대용량 배열 처리시 메모리 overflow 가능성이 있다.
- return값 자체를 반환한다.
3. reduce
var arr = [1, 2, 3, 4, 5];
var newArr = arr.reduce(function(acc, v, i, arr) {
return acc + v;
});
// 15
educe의 가장 큰 특징으로는 첫번째 인자인 accumulator 이다. accumulator 는 return값을 누적하는데, 계속해서 전달받아서 사용할 수도 있다.
4. for loop
- 가장 빠르고 단순하다. 그래서 효율적이다.
- 모든 자료형에 대해 사용이 가능하다.
- 중간에 loop 건너뛰기나 종료가 가능하다. (continue or break)
- 반복범위 컨트롤이 가능하다. (i++, i–, i+=2*i 등)
- 변수를 활용할 수 있다. (var i 값을 사용할 수 있다)
5. forEach
가독성이 좋다는 것은 개발에서 엄청난 차이를 가져온다. forEach는 복잡한 객체를 처리하는데 있어서 유리하다.
- 빠른편이다.
- Array객체에서 사용이 가능하다.
- 일반 for문보다 가독성이 좋고, 객체형을 다루기가 쉽다.
- for문과 다르게 중간에 끊을 방법이 없다. (return으로 skip가능)
- return값을 받지 못한다.
반응형