자바스크립트 배열에서 forEach나 if문을 활용해서 나름 필터기능을 사용하고는 했었다.
함수형 기법을 조금 적용해 보면, 그러한 행위보다는 위에 나온 3가지 메서드를 활용하는 방법이 조금 더 효율적이고 코드가 깔끔 해 진다.
Map은 배열 내부의 데이터를 변환하는 메소드 이며,
Filter는 true, false를 반환하여 if문의 효과를 가져온다.
Reduce는 데이터의 결과를 단일로 만드는 기능인데..필터기능이 추가된 것이라 보면 될 것 같다.
아래 소스코드를 보자.
var array = [1, 2, 3];
array = array.map((res)=>{ return res * 2});
console.log(array); //1,2,3 배열값이 *2가된다.
array = array.filter((val)=>{
return val >2 ? true : false;
});
console.log(array); //2 이하 값이 배열에서 자동 제거가 된다.
const result = array.reduce((acc, cur, i) => {
console.log(acc, cur, i); //i는 인덱스 번호이다.
//acc는 초기 배열값, 1을 의미하며
//cur는 현재 배열값을 의미한다.
//아래 return을 보면 acc값이 cur값과 더해지는데
//결국 배열의 총 합이 더해지게된다.
return acc + cur;
}, 0);
console.log(result); //배열의 합이 나온다
foreach를 통해서 내부에서 if문을 쓰는것도 방법이지만..
위와같은 메서드를 통해서 사용하는 것도 하나의 방법인 것 같다.
반응형
'Javascript > [기초] Javascript' 카테고리의 다른 글
(기본/기초) javascript setTimeout setInterval clearInterval (0) | 2019.11.08 |
---|---|
(기본/기초) 자바스크립트 var, let, const (Javascript var) (0) | 2019.10.04 |
(기본/기초) Javascript 클로저, Javascript closure, 자바스크립트 클로저 (0) | 2019.10.04 |
(기본/기초) 브라우저 개발자도구 (0) | 2019.04.27 |
(기본/기초) Html 페이지 생성시 Content-type의 중요성 (0) | 2019.04.27 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글