살아가는 이유_EU
내가 살아가는 이유, 삶
살아가는 이유_EU
전체 방문자
오늘
어제
  • 삶 (159)
    • 이유's EATERY (16)
      • 맛집 (10)
      • 까페 (4)
      • 맛있는 Recipe (1)
    • 이유's LIFE (16)
      • 국내여행 (5)
      • 해외여행 (2)
      • 운동 (1)
      • 취업정보 (0)
      • 끄적끄적 (5)
      • 일기쟝 (3)
      • 세상 이야기 (0)
      • 결혼 준비 (0)
    • 이유's Programming (43)
      • JavaScript (6)
      • Java (7)
      • C++ (0)
      • DBMS (24)
      • Spring (3)
      • til (1)
      • HTTP (2)
    • 이유's REVIEW (13)
      • BOOK (6)
      • PROGRAM or MOVIE (5)
      • PRODUCT 제품리뷰 (2)
    • 이유's STUDY (31)
      • 수업 관련 (2)
      • IT 시사 (2)
      • IT NEWS (2)
      • IVIEW (0)
      • IOS 앱 만들기 (0)
      • 알고리즘 문제풀이 (23)
      • PM data literacy (2)
    • 이유's ENGLISH (13)
      • Writing about something! (12)
      • Feedback (1)
      • TIL (0)
    • 이유's DB 공부 (1)
      • MySQL DB (0)
      • Postgre (1)
    • Computer 공부 (17)
      • Backend question (10)
      • Clean architecture (2)
      • Operating system (2)
      • Network (3)
      • 항해 (0)

블로그 메뉴

  • 홈
  • EATERY's 맛집
  • CAFE 까페
  • Recipe 레시피
  • IT 공부
  • 방명록
  • 태그

공지사항

인기 글

태그

  • 스테이크
  • go hand in hand
  • memoziation
  • 자세요정
  • 고메커피
  • 삼돈식탁
  • 어게인마이라이프
  • 영어공부
  • 용인맛집
  • React.memo
  • 맛집
  • 인절미 티라미수
  • 묵리
  • 렌더링 수 줄이기
  • 용인추천
  • map 하는 법
  • Array로 접근
  • have something to do with뜻
  • 송계옥
  • 현명하게 리액트
  • 스쿤브레드
  • key 로 접근
  • 파스타맛집
  • 흑임자 크림
  • 피지오필로소피
  • 자바스크립트
  • 고메동 카페
  • have something to do with
  • 아메리카토노
  • 용인까페

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
살아가는 이유_EU

내가 살아가는 이유, 삶

자바스크립트 MAP - array 는 배열로 관리하기. / array 를 key 로 접근
이유's Programming/JavaScript

자바스크립트 MAP - array 는 배열로 관리하기. / array 를 key 로 접근

2021. 1. 23. 09:34
728x90
반응형

자바스크립트를 공부하면 나오는 array 여기서 ES6 부터는 map 으로 데이터를 관리하여 주게 됩니다. 

이런식으로 array 가 새롭게 생성되어있을 때 Array의 각 요소를 순회하며 callback 함수를 수행하는 것을 map 이라고 합니다 .

 

array 의 핵심 기능 그러면 map 에 대해서 알아봅시다. 

map 은 한마디로 "맵핑" 해주는 개념이라고 생각이라고 하면 된다. 

배열.map((요소, 인덱스, 배열) => { return 요소 });

이런식으로 배열에 있는 요소들을 맵핑해주며 우리가 원하는 작업을 할 수 있다. 많은 사람들이 forEach 를 사용하는데 이것보다 좀더 빠르고 간편하게 쓸 수 있습니다. 

 

 

사용법 ) 특히 JSX 코드 상이나 리액트에서 쓸때 array 의 인자별로 내부 내용을 한꺼번에 적용시키고 싶을 때 아주 편리합니다. 

예시 
 {   importArray.map(element => (  <Option key={element} value={element}>{element}</Option> ))}

저 위에서 element 는 importArray 가 돌아가며 안에 있는 내부 값을 element 로 지칭하고 있습니다. 

 

약간 이런 느낌과 비슷하죠. 이런식으로 array 의 처음부터 끝까지를 돌며 이를 element 로 지칭했다고 생각하시면 되겠습니다. 

for ( let index in importArray.length) {
 var  element = importArray[index] 
}

 

[ Map 간단한 예시 ] 

직접 실행한 파일 코드 

 

map을 실행하는 배열과 결과로 나오는 배열이 다른 객체라는 것이어서 console 창에 보면 numbers 객체 내부는 변하지 않고 새로 만들어진 proceed 의 값이 나오는 것을 의미합니다. 

 

따라서 결과 값은 ) 

numbers  여전히 동일한 [1,2,3,4,5 ] 
proceed 의 값은 [1,4,9, 16, 25 ]

-> 여기서 알 수 있는 점) 
array 의 map 의 기능을 이용하여 접근을 한다고 해도 array 내부의 실제 데이터는 변하지 않는다. 

 

[ 데이터 배열 접근 - concat/ filter  ] 

여기서 key 는 왜 필요할까?

key 는 element 에서 언제나 유일한 값으로 설정되기 때문이다. 따라서 이렇게 mapping 을 하며 각 요소들을 돌아가거나 또한 array 내부의 유일한 값으로 key 를 갖게 됩니다. 따로 key 를 해주지 않으면 index 값으로 설정되기도 합니다 .

두가지 방안 ( concat / filter ) 

 

1) 배열을 추가하는 것 - concat

배열을 추가할 때 "concat"을 씁니다. 이처럼 원래 배열을 건드리지 않고 새로운 배열을 return 해주는 값으로 새로운 array 를 생성해주는 함수입니다. 

 

var importArray = [1,2,3,4,5] 
const array = importArray.concat([6,7]) 

 

 

결과값 :

array 의 결과값은 1,2,3,4,5,6,7 이 모두 들어간 것을 볼 수 있다. 이런식으로 간단하게 cocat을 사용하여 배열을 추가하여 안에 있는 내부 값을 늘릴 수 있습니다. 

 

const array1 = ['a', 'b', 'c'];
const array2 = ['d', 'e', 'f'];
const array3 = array1.concat(array2);

console.log(array3);
// expected output: Array ["a", "b", "c", "d", "e", "f"]

 

2) 배열 내부를 수정하는 것- filter

배열내부를 수정하는 함수는 filter 로 쓸 수 있습니다. 이 역시 원래 Array 의 내부를 건드리지 않고 새롭게 filtering 된 arrya 를 return 해주는 형태입니다 .

 

arr.filter(callback(element[, index[, array]])[, thisArg]) 

element 처리할 현재 요소.
index 처리할 현재 요소의 인덱스. (  선택 ) 
array filter를 호출한 배열. ( 선택) 
thisArg callback을 실행할 때 this로 사용하는 값. ( 선택 ) 

 

가장 많이 쓰였던 내용 중 하나로 검색을 하거나 안에 있는 수정된 값을 적용 시킬때 매우 유효합니다.

또한 필터링 할 때 많이 쓰입니다. 

 

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);

 

 

 

 

( 참고한 사이트 : www.zerocho.com/category/JavaScript/post/5acafb05f24445001b8d796d ) 

( 참고한 사이트 :  developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter ) 

( 참고한 내용 : 리액트를 다루는 기술/ 출판사 : 길벗) 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'이유's Programming > JavaScript' 카테고리의 다른 글

함수형 프로그래밍에 대한 introduction / 선언형 프로그래밍/ 함수형 프로그래밍/ functional programming  (2) 2021.08.12
Redux 에서 Mobx 상태관리 도입기 - 참고  (0) 2021.03.23
[ 구글 채널 ] Scheduling Tasks - HTTP 203  (1) 2021.03.02
[ React -1 ] React.memo 를 사용하여 컴포넌트 성능 최적화하기 . / React.memo 사용할 때 그리고 사용하지 않을 때 팁 정리  (0) 2021.01.26
5강 Class  (0) 2020.07.11
    '이유's Programming/JavaScript' 카테고리의 다른 글
    • Redux 에서 Mobx 상태관리 도입기 - 참고
    • [ 구글 채널 ] Scheduling Tasks - HTTP 203
    • [ React -1 ] React.memo 를 사용하여 컴포넌트 성능 최적화하기 . / React.memo 사용할 때 그리고 사용하지 않을 때 팁 정리
    • 5강 Class
    살아가는 이유_EU
    살아가는 이유_EU
    안녕하세요. 초보개발자의 일상을 담은 블로그입니다.

    티스토리툴바