[JavaScript] 자바스크립트 배열(array) : 생성 및 활용

2021. 8. 3. 16:57·JavaScript
728x90

 

 

배열 (array)

: 이름과 인덱스로 참조되는 정렬된 값의 집합

- 요소 (element) : 배열을 구성하는 각각의 값

- 인덱스 (index) : 배열에서의 위치를 가리키는 숫자

 

 

 

자바스크립트에서 배열 특징

1. Array 객체로 다룬다

2. 배열 요소의 타입이 고정되어 있지 않아, 같은 배열에 있는 요소들끼리 타입이 서로 다를 수 있다

3. 인덱스가 연속적이지 않아도 되며, 특정 요소가 비어있을 수도 있다

 

 

 

 


배열의 사용

 

배열의 생성

- 문법

1. var arr = [배열요소1, 배열요소2,...];          // 배열 리터럴을 이용하는 방법
2. var arr = Array(배열요소1, 배열요소2,...);     // Array 객체의 생성자를 이용하는 방법
3. var arr = new Array(배열요소1, 배열요소2,...); // new 연산자를 이용한 Array 객체 생성 방법

 

 

 

배열의 인덱스

- 자바스크립트에서 인덱스는 언제나 0부터 시작한다

- 인덱스에는 2^32보다 작은 양수만 사용가능

- 배열의 길이 : length 프로퍼티에 자동으로 갱신된다

- 홀 (hole) : 인덱스에 대응하는 배열 요소가 없는 부분. undefined 값을 가지는 요소처럼 취급한다

 

 

 

배열의 참조

- 배열의 요소를 참조할 때는 [] 연산자를 사용한다

- 문법

배열이름[인덱스]

- 현재 배열의 길이보다 큰 인덱스에 요소를 저장하는 것도 가능하다

  배열의 길이가 자동으로 해당 인덱스까지 늘어난다.

 

 

 

배열 요소의 추가

- 문법

1. arr.push(추가할 요소);         // push() 메소드를 이용하는 방법
2. arr[특정인덱스] = 추가할 요소; // 특정 인덱스를 지정하여 추가하는 방법

- push() 메소드를 사용하면 배열의 제일 끝에 요소를 추가한다

 

 

 

 

 


배열의 활용

 

 

희소 배열

: 배열에 속한 요소의 위치가 연속적이지 않은 배열

- length 프로퍼티 값보다 배열 요소 개수가 항상 적다

 

 

 

다차원 배열

: 배열의 요소가 또 다른 배열인 배열

- (예) 2차원 배열 생성

var arr = new Array(3);      // 3개의 요소를 가지는 배열을 생성함.
for (var row = 0; row < 3; row++) {
    arr[row] = new Array(4); // 각각의 요소마다 또다시 4개의 요소를 가지는 배열을 생성함.
    }
}

 

 

 

연관 배열 (associative array)

: 숫자로 된 인덱스 대신 문자열로 된 키(key)로 사용되는 배열

- 자바스크립트에서 연관 배열을 별도로 제공하지 않는다

- 대신 인덱스로 문자열을 사용하여 연관 배열처럼 사용할 수 있는 객체(object)를 만들 수 있다

- 이러한 배열은 JS 내부적으로 Array 객체에서 기본 객체로 재선언되기 때문에, 기존 사용했던 모든 Array 메소드와 프로퍼티가 정확하지 않은 결과값을 반환한다

- ECMAScript 6부터는 이러한 불편함을 해결하는 새로운 데이터 구조 Map 객체를 제공한다

- (예) 연관 배열

var arr = [];     // 비어있는 배열을 생성함.
arr["하나"] = 1;  // 숫자 인덱스 대신에 문자열을 인덱스로 배열 요소를 추가함.
arr["참"] = true;
arr["자바스크립트"] = "JavaScript";
document.write(arr["참"]);  // 문자열을 인덱스로 배열 요소에 접근할 수 있음.
document.write(arr.length); // 연관 배열은 Array 객체가 아니므로 length 프로퍼티의 값이 0임.
document.write(arr[0]);     // undefined

 

 

 

문자열을 배열처럼 접근하기

- JS에서 문자열은 변하지 않는 값으로, 읽기 전용 배열로 다룰 수 있다

- [] 연산자로 문자열을 구성하는 각 문자에 접근할 수 있고, Array 객체가 제공하는 메소드도 사용 가능하다

- 각 문자는 String 객체에서 제공하는 charAt() 메소드를 사용하여 접근하는 것도 가능하다

 

 

 

자바스크립트에서 배열 여부 확인

- JS에서는 배열은 별도의 타입이 없이 객체(object) 타입이 되므로 typeof를 통해 확인할 수 없다

var arr = [1, true, "JavaScript"]; // 배열 생성
document.write(typeof arr);        // object

- 따라서 다음과 같은 방법을 통해 배열 여부를 확인해야 한다

 

 

1. Array.isArray() 메소드

document.write(Array.isArray(arr));      // true
document.write(Array.isArray("문자열")); // false

 

2. instanceof 연산자

document.write(arr instanceof Array); // true
document.write(123 instanceof Array); // false

 

3. constructor 프로퍼티

- Array 객체의 constructor 프로퍼티를 사용하여 배열 여부 확인

- constructor 속성 : 어떤 생성자 객체를 통해 생겨난 instance인지를 알려주는 역할을 한다

- (예) toString(), indexOf() 메소드를 함께 사용하여 해당 변수의 배열 여부를 확인하는 예제

function isArray(a) {
    return a.constructor.toString().indexOf("Array") > -1;
}
 
var arr = [1, true, "JavaScript"];          // 배열 생성
document.write(arr.constructor);            // constructor 프로퍼티의 값 출력
document.write(arr.constructor.toString()); // function Array() {[native code]}
document.write(arr.constructor.toString().indexOf("Array")); // 10
document.write(isArray(arr))                // true

 

 

 

 

 

 

 

 

[참고자료] http://tcpschool.com/javascript/intro

 

728x90
저작자표시 비영리 (새창열림)

'JavaScript' 카테고리의 다른 글

[JavaScript] 자바스크립트 함수(function) (2) : 미리 정의된 전역 함수  (0) 2021.08.03
[JavaScript] 자바스크립트 함수(function) (1) : 정의, 유효범위, 호이스팅, arguments, 디폴트 매개변수  (0) 2021.08.03
[JavaScript] 자바스크립트 제어문 : 조건문, 반복문, 루프 제어(label, continue, break)  (0) 2021.07.16
[JavaScript] 자바스크립트 연산자 : 산술, 연산자 우선순위, 대입, 증감, 비교, 논리, 비트 연산자  (0) 2021.07.16
[JavaScript] 자바스크립트 타입 : 타입 변환  (0) 2021.07.14
'JavaScript' 카테고리의 다른 글
  • [JavaScript] 자바스크립트 함수(function) (2) : 미리 정의된 전역 함수
  • [JavaScript] 자바스크립트 함수(function) (1) : 정의, 유효범위, 호이스팅, arguments, 디폴트 매개변수
  • [JavaScript] 자바스크립트 제어문 : 조건문, 반복문, 루프 제어(label, continue, break)
  • [JavaScript] 자바스크립트 연산자 : 산술, 연산자 우선순위, 대입, 증감, 비교, 논리, 비트 연산자
s_ih_yun
s_ih_yun
  • s_ih_yun
    CODESYUN
    s_ih_yun
  • 전체
    오늘
    어제
    • 분류 전체보기 (339)
      • Web (8)
      • Java (7)
      • Spring (19)
      • Git (16)
      • MyBatis (1)
      • HTML & CSS (14)
      • JavaScript (11)
      • DevOps (4)
      • Cloud (8)
      • Lanuage (13)
        • C++ (3)
        • Python (10)
      • DB (1)
        • MySQL (1)
        • Oracle (2)
      • Computer Science (26)
        • Concept (3)
        • Algorithm (23)
      • Baekjoon (104)
        • 단계별로 풀어보기 (78)
      • CodeUp (98)
        • Python 기초 100제 (98)
      • Programmers (2)
      • Books (3)
      • etc (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • Syun's Pages
  • 인기 글

  • 태그

    db
    oracle
    HTML
    github
    codeup
    JavaScript
    Python
    BOJ
    git
    알고리즘
    MySQL
    CodeUp 기초 100제
    웹
    CSS
    myBatis
    java
    자료구조
    C
    aws
    web
    VS Code
    c++
    SourceTree
    Cloud
    Programmers
    clean code
    단계별로 풀어보기
    spring
    Tistory
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
s_ih_yun
[JavaScript] 자바스크립트 배열(array) : 생성 및 활용
상단으로

티스토리툴바