날아라쩡글이의 블로그입니다.
배열 Map(),reduce() 본문
728x90
반응형
배열 Map(함수)
- 지정된 함수가 반환하는 값이 포함된 배열을 생성한다.
- 원본배열을 이용해서 새로운 배열을 만들 때 사용되는 메소드이다.
- Map은 가공을 한다라는 의미로 생각하면 된다.
- 학생들의 성적정보가 저장된 배열, 데이터가 존재한다.
- var data = [
{name:"홍길동", kor:100, eng:70, math:70},
{name:"김유신", kor:90, eng:90, math:60},
{name:"강감찬", kor:70, eng:50, math:40},
{name:"이순신", kor:80, eng:70, math:70},
{name:"류관순", kor:100, eng:80, math:80}
]; - 학생의 성적정보 배열
- var names = data.map(function(student, index){
return student.name;
}) - 원본배열을 이용해서 시험을 본 학생들의 이름이 저장된 배열
- names = data.map(studnet => student.name);
- 원본배열을 이용해서 이름, 총점, 평균이 저장된 배열 생성하기
- var scores = data.map(function(student){
var scores = {
name : student.name,
total : student.kor +student.eng + student.math,
average : (student.kor +student.eng + student.math)/3
};
return scores
}); - 객체를 만들었다.
- 원본배열을 이용해서 평균 점수가 60점이상인 합격자 명단이 저장된 배열 생성하기
- var passedNames = data.map(function(student){
var scores = {
name : student.name,
average : (student.kor +student.eng + student.math)/3
};
return scores;
})
.filter(function(item){
return item.average >= 60;
}) //필터로 점수가 평균점수가 60점이상에 참인것만 걸러짐
.map(function(item){
return item.name
}) //["홍길동", "이순신", "류관순"]
- var passedNames = data.map(function(student){
- 화살표 함수를 이용해서 시험을 통과한 학생들의 이름을 획득하기
- passedNames = data.map(item=>{
return{ //return에 빈줄을 넣으면 안된다.
name:item.name,
average:(item.kor + item.eng + item.math)/3
}
}) //배열이 반환된다.
.filter(item =>item.average >= 60) //평균점수가 60점이상인 배열이 반환된다.
.map(item => item.name) //이름으로 이뤄진 배열이 반환된다.
.join(","); //"이름,이름,..."문자열이 반환된다.
- passedNames = data.map(item=>{
- 메소드 체이닝이라고 한다.
- 연쇄적으로 함수를 붙여서 사용한다.
- var 결과 = 배열.map(함수).filter(함수).map(함수).join(구분자)
- 결과값은 구분자로 문자열이 반환된다.
- 원본배열을 새로운 배열로 가공시켜주는 메소드이다. 기존의 data를 다른 형태릐 데이타로 변경해준다.
배열.reduce(함수(매개변수, 매개변수))
- 배열의 요소를 처리해서 최종적으로 값 하나를 반환하는 것이다.
- reduce라는 단어가 줄인다라는 뜻을 가지고 있다.
- reduce함수의 매개변수는 항상 2개의 값이 필요하다.
- 배열.reduce(function(total, value){return total + value;})
- total의 초기값은 0이다.
- 지정된 함수의 반환값이, 다음번 실행되는 함수의 total로 전달된다.
- value은 배열의 값이 순서대로 전달된다.
- map과 reduce는 빅데이터에서 제일 중요한 개념이다.
- var numbers =[80, 100, 20, 50, 70];
- var total = numbers.reduce(function(subtotal, num){
// 0, 80 /80 ,100 / 180, 20..이렇게 들어가게됨
return subtotal + num
});
console.log(total);
- var total = numbers.reduce(function(subtotal, num){
- 데이터를 가지고 오면 map으로 가공을 하고, reduce를 이용해 필요한 금액에 대한 모두 총 합을 구한다.
- 데이터를 clean하고, 분산환경을 만들고 중단되지 않게 만들어주는 빅데이터 처리를 해주는 분산파일시스템 중 하둡이라고 존재한다.
반응형
'중앙 HTA (2106기) story > javascript story' 카테고리의 다른 글
Date메소드, math메소드 (0) | 2021.12.18 |
---|---|
객체 생성하기 (0) | 2021.12.18 |
배열 반복 문, 필터 메소드 (0) | 2021.12.17 |
배열 메소드 (0) | 2021.12.16 |
문자메소드 (0) | 2021.12.16 |
Comments