home강의 홈으로
Section 7. 배열
Lesson 1. 자바스크립트 배열의 특징과 생성

👉 MDN 문서 보기

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

img

다른 언어들의 배열 전형적인 배열

  • 한 배열에는 같은 자료형의 데이터만 포함 가능
  • 데이터의 메모리 주소가 연속으로 나열됨
  • 접근은 빠름, 중간요소의 추가나 제거는 느림

자바스크립트의 배열

  • ⭐️ 배열의 형태와 동작을 흉내내는 특수 객체
  • 한 배열에 다양한 자료형의 데이터가 들어갈 수 있음
  • 연속나열이 아님 - 💡 엔진에 따라 요소들의 타입이 동일하면 연속 배열하기도...
  • 접근은 상대적으로 느림 (일반 객체보다는 빠름), 중간요소의 추가나 제거는 빠름
  • 💡 특정 자료형 전용 배열도 있음 - 더 빠름 🔗 MDN 문서 보기




II. 배열 생성 방법들

1. 배열 리터럴

const arr1 = []; // 빈 배열 const arr2 = [1, 2, 3]; const arr3 = [1, , 2, , 3] // 빈 요소(undefined) 표함 배열 생성 console.log(arr1.length, arr1); console.log(arr2.length, arr2); console.log(arr3.length, arr3);
  • arr3의 프로퍼티들 확인 빠진 인덱스 있음, 인덱스 수 < length


2. 생성자 함수

const arr = new Array(); console.log(arr); console.log(arr.length);
  • 콘솔에서 펼쳐서 확인해 볼 것 길이값만 있음

const arr = new Array(3); console.log(arr); console.log(arr.length); console.log( arr[0], arr[1], arr[2] );
  • 인자가 숫자 하나면 길이값은 있지만 요소가 없는 배열 생성 접근시 undefined

const arr1 = new Array(1, 2, 3); const arr2 = new Array('ABC'); const arr3 = new Array(true); console.log(arr1); console.log(arr2) console.log(arr3)
  • 인자가 숫자가 아니거나 둘 이상이라면 해당 값들로 배열 생성


3. 정적 메서드 of

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

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); console.log(arr2); console.log(arr3);

💡 유사배열객체: length와 인덱싱 프로퍼티를 가진 객체

const arrLike = { 0: '🍎', 1: '🍌', 2: '🥝', 3: '🍒', 4: '🫐', length: 5 }; // 일반 for문으로 순회 가능 for (let i = 0; i < arrLike.length; i++) { console.log(arrLike[i]); } // for ... of 문은 이터러블에서만 사용 가능 for (const item of arrLike) { console.log(item); } // 배열은 이터러블, 성능도 향상 for (const item of Array.from(arrLike)) { console.log(item); }
  • 이후 배울 Map, Set 등의 이터러블로부터도 배열 생성 가능

⚠️ Array.from얕은 복사 - 1단계 깊이만 복사

const arr1 = [1, 2, 3]; const arr2 = Array.from(arr1); arr2.push(4); console.log(arr1, arr2); arr1[0] = 0; console.log(arr1, arr2);


const arr1 = [{x: 1}, {x: 2}]; const arr2 = Array.from(arr1); arr2.push({x: 3}); // 참조타입 요소의 내부값이 바뀔 경우 arr1[0].x = 0; console.log(arr1, arr2);

⭐️ 두 번째 인자: 매핑 함수

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); console.log(arr3); console.log(arr4);
  • 매핑 mapping : 각 요소가 특정 알고리즘을 거쳐 새 값으로 반환됨
  • 곧 배울 인스턴스 메서드 map이 보다 자주 사용됨

🤔얄코에게 질문하기질문은 반.드.시 이리로 보내주세요! ( 강의사이트 질문기능 ✖ )

강의에서 이해가 안 되거나 실습상 문제가 있는 부분,
설명이 잘못되었거나 미흡한 부분을 메일로 알려주세요!

답변드린 뒤 필요할 경우 본 페이지에
관련 내용을 추가/수정하도록 하겠습니다.

이메일 주소
yalco@yalco.kr
메일 제목 (반드시 아래 제목을 붙여넣어주세요!)
[질문] 제대로 파는 자바스크립트 (무료 파트) 7-1

🛑질문 전 필독!!

  • 구글링을 먼저 해 주세요. 들어오는 질문의 절반 이상은 구글에 검색해 보면 1분 이내로 답을 찾을 수 있는 내용들입니다.
  • 오류 메시지가 있을 경우 이를 구글에 복붙해서 검색해보면 대부분 짧은 시간 내 해결방법을 찾을 수 있습니다.
  • 강의 페이지에 추가사항 등 놓친 부분이 없는지 확인해주세요. 자주 들어오는 질문은 페이지에 추가사항으로 업데이트됩니다.
  • "유료파트의 강의페이지는 어디 있나요?" - 각 영상의 시작부분 검은 화면마다 해당 챕터의 강의페이지 링크가 있습니다.
  • 질문을 보내주실 때는 문제가 어떻게 발생했고 어떤 상황인지 등을 구체적으로 적어주세요. 스크린샷을 첨부해주시면 더욱 좋습니다.
🌏 Why not change the world?