Javascript의 Array 의 concat, $.extend 메소드 알아보기

2013. 4. 10. 11:05·프로그래밍 언어/js

참조링크 => 라셍님 블로그

Javascript의 Array 타입이 제공해주는 기본 메소드 중에서 유용한 메소드인

push, concat 

에 대하여 알아보고, jQuery의 extend를 이하여 배열을 합친것과 concat의 차이점을 알아보자.


우선 기본적인 Array 타입의 형태를 알아보자.

// 영화 Object 선언
	var shiri = { name: '쉬리', year: '1998' };
	var oldboy = { name: '올드보이', year: '2003' };
	var myway = { name: '마이웨이', year: '2011' };
	var masqurade = { name: '광해', year: '2012' };
	var ironman3 = { name: '아이언맨3', year: '2013' };
	
	// array 형식 직접생성
	var arr1 = [];
	// 배열을 이용한 간접 생성
	var arr2 = new Array(2);
	
	// arr1에 데이터 입력
	arr1.push(shiri);
	arr1[1] = oldboy;
	arr1.push(myway);
	
	// 결과 : [Object, Object, Object]
	console.log(arr1);
	
	arr2[0] = shiri;
	arr2.push(masqurade);
	var index = arr2.push(ironman3);
	
	// 결과 : 4
	console.log(index);
	// 결과 : [Object, 2: Object, 3: Object]
	// push 로 데이터를 입력하면 현재 존재하는 배열의 마지막에 값을 추가한다.
	console.log(arr2);
	
	
	
	// 결과 :[Object, Object, Object, Object, 5: Object, 6: Object]
	// concat 은 배열의 데이터를 합쳐서 새로운 배열을 만든다.
	console.log(arr1.concat(arr2));
	// 결과 : [Object, Object, Object]
	console.log(arr1);
	// 결과 : [Object, 2: Object, 3: Object]
	console.log(arr2);
	
	
	
	
	// 결과 : [Object, Object, Object, Object]
	// $.extend 를 사용하여 배열을 합치면 기존의 배열에 값을 복사하고, 
	// 값들을 비교하여 중복된 값을 제거한다. 
	console.log($.extend(arr1, arr2));
	// 결과 : [Object, Object, Object, Object]
	console.log(arr1);
	// 결과 : [Object, 2: Object, 3: Object]
	console.log(arr2);



위의 결과에서 주목할 것은 3가지가 있다. 


우선 push로 데이터를 입력한 것과 [0] 처럼 배열의 인덱스를 직접 지정하여 데이터를 입력한 것의 차이다. 

push는 현재 배열 인덱스에 1을 추가하고 값을 입력한다. 따라서 arr2 의 결과처럼 arr2[1]의 결과값이 비게 되는 것이다. 


두번째는 concat 로 배열을 합치면 현재 배열의 값을 복사하여 새로운 배열을 생성하는 것이다. 

arr1, arr2를 합친 배열의 결과값이 변하지 않은 것을 확인할 수 있다. 


세번째는 $.extend 를 이용하여 배열을 합치면 각 배열의 중복값을 제거하고 배열을 생성한다는 것이다. 

물론 $.extend의 첫번째 인자로 빈 배열을 입력할 수도 있겠지만, extend를 이용하면 배열의 중복값이 제거 된다는 것을 알아야 하겠다. 


마지막으로 concat, $.extend 는 기본적으로 얕은 복사다. Object 를 이용했을 때 잘 구분해서 처리해야 하겠다. 


concat과 $.extend를 비슷하다고 생각하겠지만 결정적인 차이가 있기 때문에 잘 구분해서 사용해야 하겠다. 


반응형

'프로그래밍 언어 > js' 카테고리의 다른 글

jQuery 2.0 릴리스  (0) 2013.04.19
GET 방식으로 호출시 '&', '+' 기호 전달하기  (0) 2013.04.18
자바스크립트의 프로토타입을 이해하고 객체지향 구현하기  (0) 2013.04.16
jQgrid의 지정한 칼럼, 지정한 열을 다른색으로 지정하기  (0) 2013.04.12
80020101 오류 해결하기  (0) 2013.02.15
'프로그래밍 언어/js' 카테고리의 다른 글
  • GET 방식으로 호출시 '&', '+' 기호 전달하기
  • 자바스크립트의 프로토타입을 이해하고 객체지향 구현하기
  • jQgrid의 지정한 칼럼, 지정한 열을 다른색으로 지정하기
  • 80020101 오류 해결하기
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    Linux
    yarn
    airflow
    ubuntu
    하둡
    java
    nodejs
    hbase
    error
    정올
    HDFS
    Python
    AWS
    oozie
    백준
    HIVE
    bash
    S3
    하이브
    Hadoop
    mysql
    emr
    build
    오류
    k8s
    Tez
    파이썬
    다이나믹
    알고리즘
    SPARK
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
Javascript의 Array 의 concat, $.extend 메소드 알아보기
상단으로

티스토리툴바