날아라쩡글이의 블로그입니다.

배열 Map(),reduce() 본문

중앙 HTA (2106기) story/javascript story

배열 Map(),reduce()

날아라쩡글이 2021. 12. 17. 14:09
반응형

배열 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
      }) //["홍길동", "이순신", "류관순"]
  • 화살표 함수를 이용해서 시험을 통과한 학생들의 이름을 획득하기
    • 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(","); //"이름,이름,..."문자열이 반환된다.
  • 메소드 체이닝이라고 한다. 
    • 연쇄적으로 함수를 붙여서 사용한다.
    • 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);
  • 데이터를 가지고 오면 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