관련 내용 학습 시, 지속적으로 추가
자바스크립트 배열은 타입이 어떤 타입의 값(문자열, 숫자, 객체 심지어 다른 배열)이라도 담을 수 있다.
배열 안에 배열을 넣음으로써 다차원 배열을 만든다.
배열 크기는 미리 정하지 않아도 된다.
"구멍 난sparse 배열"이란 "빈/빠진 슬롯이 있는 배열"을 말한다.
구멍 난 배열은 다음 두 가지 상황에서 발생한다.
delete
연산자를 사용하여 배열의 특정 슬롯 제거한 경우배열의 값에 delete
연산자를 적용하면 슬롯slot을 제거 할 수 있다.
참고로, 마지막 원소까지 제거해도 length 프로퍼티 값까지 바뀌지는 않는다.
const arr = ['a', 'b'];
delete arr[0];
arr; // [ <1 empty item>, 'b' ]
arr.length; // 2
delete arr[1];
arr; // [ <2 empty items> ]
arr.length; // 2
다음 코드는 두 번째 경우의 코드이다.
const arr = [];
arr[0] = 1;
// 'a[1]' 슬롯 건너뜀
arr[2] = 3;
arr[1]; // undefined
arr.length; // 3
a[1]
슬롯 값은 당연히 undefined
가 될 것 같지만,
명시적으로 a[1] = undefined
를 대입한 것과 똑같지는 않다.
알다시피, 배열 인덱스는 숫자이지만,
배열 자체도 하나의 객체이기 때문에 키/프로퍼티 문자열을 추가할 수 있다.
하지만, 배열의 length가 증가하지는 않는다.
const arr = [];
arr[0] = 1;
arr["idx1"] = 2;
arr // [ 1, idx1: 2 ]
arr["idx1"]; // 2
arr.idx1; // 2
arr.length; // 1 (?!)
하지만 키로 넣은 문자열 값이 표준 10진수 숫자로 타입이 바뀔 수 있다면,
마치 문자열 키가 아닌 숫자 인덱스를 사용한 것과 같은 결과를 초래한다.
const arr = [];
arr[0] = 1;
arr["10"] = 10;
arr; // [ 1, <9 empty items>, 10 ]
arr["0"]; // 1
arr["10"]; // 10
arr.length; // 11
위처럼 배열에 문자열 타입의 키/프로퍼티를 두는 것이 가능은 하나, 추천하지 않는다.
push
: 요소를 배열 마지막에 추가
ex) array.push(017)
unshift
: 요소를 배열 처음에 추가
ex) array.unshifht(456)
pop
: 배열 마지막 요소 제거
ex) array.pop()
shift
: 배열 첫 번째 요소 제거
ex) array.,shift()
length
: 배열의 길이
ex) array.length