배열 (Array)
- 해당 항목의 offset을 계산할 수 있는 정수를 통해 각 항목들을 접근할 수 있는 연속적인 메모리 할당
- 자바스크립트에서의 배열 : 배열의 특성을 지닌 객체
* typeof [] => "object"
- 타입이 고정적이지 않음 (같은 배열에 있는 원소의 값이 서로 다를 수 있다)
- 32비트 인덱스를 사용한다
- 크기가 동적이다
- 배열을 생성하거나 크기가 변경되어 다시 할당을 하더라도 배열 크기를 다시 선언할 필요가 없다
- 모든 배열은 객체 (배열이 객체의 프로토타입으로부터 속성들을 상속 받은 객체이기 때문)
배열 만드는 방법
[1, 2, 3] => [1, 2, 3]
new Array(1, 2, 3) => [1, 2, 3]
new Array(3) => [undefined, undefined, undefined]
희소배열
배열에 속한 원소의 위치가 연속적이지 않은 배열
length 속성의 값은 원소의 개수보다 항상 큼
보통 배열보다 일반적으로 느리고, 메모리를 많이 사용하고, 원소를 찾는 시간이 오래 걸림
배열 순회하기
for(var i=0; len = keys.length;i<len;i++)
{
if(!keys[i])
continue; // null, undefined 빈 원소일 때 건너 뜀
}
for / in 루프는 상속 받은 속성 이름까지 넘겨준다
(원하지 않은 속성을 제외하고 추가된 속성만 테스트하는 경우가 아니라면 사용하지 말아야 한다)
매소드(Methods)
- 삽입/삭제
push
unshift
pop
shift
- 배열 편집
concat
slice
* splice : 주의 원본 배열이 변경됨
- 정렬
sort
reverse
- 반복
forEach
filter
map
reduce
every
some
- 기타
isArray
indexOf
lastIndexOf
join