ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 7-1. JavaScript 배열의 특징과 생성
    JavaScript 2023. 4. 2. 22:21

    I. 자바스크립트의 배열은 다르다.

    1. 다른 언어들의 배열

     - 한 배열에는 같은 자료형의 데이터만 포함 가능

     - 데이터의 메모리 주소가 연속적으로 나열

     - 접근은 빠름, 중간요소의 추가나 제거는 느림

     

    2. 자바스크립트의 배열

     - 배열의 형태와 동작을 흉내내는 특수 객체

     - 한 배열에 다양한 자료형의 데이터가 들어갈 수 있음

     - 연속나열이 아님

     - 접근은 상대적으로 느림, 중간요소의 추가나 제거는 빠름

     

     

    II. 배열 생성 방법들

     

    1. 배열 리터럴

    const emptyArr = []; // 빈 배열
    const array = [1, 2, 3];
    const undefArray = [1, , 2, , 3] // 빈 요소(undefined) 표함 배열 생성
    
    console.log(emptyArr.length, emptyArr);	// []
    console.log(array.length, array);	// [1, 2, 3]
    console.log(undefArray.length, undefArray);	// [1, 비어있음, 2, 비어있음, 3]

     - undefArray의 프로퍼티들 확인

    위와 같이 undefArray의 프로퍼티들을 살펴보면,

    중간에 빈 요소(undefined)를 넣으면 '비어있음'이 들어가있고,

    해당 인덱스가 빠져있는 것을 볼 수 있다. (인덱스 수 < length)

     

     

    2. 생성자 함수

     - 표준 빌트인 객체들 중 하나

    const array = new Array();
    
    console.log(array);	// [] (콘솔에서 펼쳐서 보면 길이값(length)만 있음
    console.log(array.length);	// 0

     - 인자가 숫자 하나면 길이값이 그 숫자가 되고 요소가 없는 배열 생성

    const arr = new Array(3);
    
    console.log(arr);	// [빈 x3]
    console.log(arr.length);	// 3
    
    console.log(
      arr[0], arr[1], arr[2]	// undefined undefined undefined
    );

     - 인자가 숫자가 아니거나, 둘 이상이라면 해당 값들로 배열 생성

    const lotArray = new Array(1, 2, 3);
    const stringArray = new Array('ABC');
    const boolArray = new Array(true);
    
    console.log(lotArray);	// [1, 2, 3]
    console.log(stringArray);	// ['ABC']
    console.log(boolArray);	// [true]

     

     

    3. 정적 메서드 of

    // 인자가 하나의 숫자라도 이를 요소로 갖는 배열 생성
    const arr1 = Array.of(3);
    
    const arr2 = Array.of(1, 2, 3);
    const arr3 = Array.of('ABC', true, null);
    
    console.log(arr1);	// [3]
    console.log(arr2);	// [1, 2, 3]
    console.log(arr3);	// ['ABC', true, null]

     

     

    4. 정적 메서드 from (얕은 복사)

     - 배열, 유사배열객체, 이터러블을 인자로 받아 배열 반환

    const arr1 = Array.from([1, 2, 3]);
    const arr2 = Array.from('ABCDE');
    const arr3 = Array.from({
      '0': true,
      '1': false,
      '2': null,
      length: 3
    });
    
    console.log(arr1);	// [1, 2, 3]
    console.log(arr2);	// ['A', 'B', 'C', 'D', 'E']
    console.log(arr3);	// [true, false, null]

     ✨ 두 번째 인자 : 매핑 함수

    const arr1 = [1, 2, 3, 4, 5];
    const arr2 = Array.from(arr1, x => x + 1);
    const arr3 = Array.from(arr1, x => x * x);
    const arr4 = Array.from(arr1, x => x % 2 ? '홀' : '짝');
    
    console.log(arr2);	// [2, 3, 4, 5, 6]
    console.log(arr3);	// [1, 4, 9, 16, 25]
    console.log(arr4);	// ['홀', '짝', '홀', '짝', '홀']

     - 매핑 (mapping) : 각 요소가 특정 알고리즘을 거쳐 새 값으로 반환됨  

    'JavaScript' 카테고리의 다른 글

    7-3. JavaScript 고차함수 메서드들  (0) 2023.04.04
    7-2. JavaScript 배열의 기본 메서드들  (0) 2023.04.03
    6-6. JavaScript Date객체  (0) 2023.03.31
    6-5. JavaScript Math 객체  (0) 2023.03.31
    6-4. JavaScript Number 객체  (0) 2023.03.31
Designed by Tistory.