배열도 객체다
객체가 프로퍼티 명으로 접근 했다면 배열의 요소에 접근할 땐 인덱스로 접근한다
var colorArr = ["orange", "yellow", "green", "red"];
console.log(colorArr[0]);
console.log(colorArr[1]);
console.log(colorArr[2]);
console.log(colorArr[3]);
동적으로 추가 가능
var emptyArr = [];
emptyArr[1] = '1';
emptyArr[3] = '3';
console.log(emptyArr); // --> undefined, 1, undefined, 3
배열은 length라는 프로퍼티를 가지고 있다
length는 원소 개수를 의미하지만, 실제 원소 개수와 항상 같은것은 아니다
그저 배열의 크기를 반환할 뿐, 실제 원소 개수를 알려주지는 않는다
배열의 가장 큰 인덱스에 1을 더한 값이다
명시적으로 변경이 가능하다
var arr = [];
arr[0] = 11;
arr[1] = 12;
arr[2] = 13;
arr[100] = 1;
print(arr.length); // 실제로 존재하는 원소는 4개지만, length는 101
push, pop, shift 등이 있다
push의 경우, 배열의 마지막 인덱스 + 1, 즉, length index에 새로운 원소를 추가한다
그러므로 length 프로퍼티는 중요하다
var arr = ['one', 'two'];
arr.push('three');
print(arr);
print(arr.length);
arr.length = 4;
print(arr);
arr.push('four');
print(arr);
print(arr.length);
배열도 객체이므로, 프로퍼티를 가질 수 있다
단, 배열의 원소가 아닌 객체로서의 프로퍼티는 length에 영향을 주지 않는다
var arr = ['one', 'two'];
print(arr.length);
arr.gender = 'male'; // 프로퍼티 추가
print(arr);
print(arr.length); // length는 변하지 않음
arr[2] = 'three'; // 원소 추가
print(arr);
print(arr.length); // length 변함
일반적으로 객체의 프로퍼티를 열거할때 for in 문을 쓰지만, 배열의 원소들을 취급할때는 그냥 for문을 쓰는 것을 권장한다
var arr = ['one', 'two'];
arr.arrayName = "arrayName";
print(arr.length);
for (var prop in arr) // for in 문 : 프로퍼티를 포함한 전체 출력
print(arr[prop]);
for (var i = 0; i < arr.length; i++) // for문 : 프로퍼티를 제외한 배열 원소만 출력
print(arr[i]);