배열은 변수명과 순서(index)로 참조되는 정렬된 값 의 집합을 의미한다.
이때, 각각의 값은 요소(element) 라고 부른다.
자바스크립트에서 배열의 특징은 다음과 같다.
let array = [1, '2', 3];
let array = [1, 2, , 3, 4];
console.log(array[2]); // undefined
자바스크립트의 배열은 사실 일반적인 배열의 동작을 모방한 객체이다. 이는 배열 요소의 메모리 공간이 상이할 수 있고, 연속적이지 않다는 점에서 알 수 있다.
이러한 배열을 '희소배열(space array)' 이라고 부른다.
해당 부분에서 설명하는 배열의 사용법은 javascript 상의 배열에 국한된다.
배열의 선언과 초기 할당은 다음과 같다.
let array = [1, 2, 3]; // 변수타입 + 변수명 = [ 요소1, 요소2, ... , 요소n];
let array2 = [[1, 2], [3, 4], [5, 6]] // 이차원 배열
배열은 index를 통해 조회할 수 있다.
console.log(array[1]); // 2
console.log(array2[1][1]); // 4
배열은 재할당과 값 추가가 가능하다.
array[0] = 2; // array = [2, 2, 3]
array[3] = 4; // array = [2, 2, 3, 4]
배열은 length를 기본 속성으로 가지고 있으며, 배열의 index 길이를 반환한다.
console.log(array.length); // 3
console.log(array2.length); // 3
console.log(array2[0].length); // 2
array.push(argument) : 배열의 마지막에 값을 추가한다.
let array = [1, 2, 3];
array.push(4); // array = [1, 2, 3, 4]
array.pop() : 배열의 마지막 값을 제거한다.
array.pop(); // array = [1, 2, 3]
array.unshift(argument) : 배열의 처음에 값을 추가한다.
array.unshift(0); // array = [0, 1, 2, 3]
array.shift() : 배열의 첫 값을 제거한다.
array.shift(); // array = [1, 2, 3]
Array.isArray(argument) : 해당 변수가 배열인지 확인하고 true or fasl를 반환하다.
Array.isArray(array); // true
Array.isArray('value'); // false;
.indexOf(argument) : 배열 내 특정 값을 확인하고 index를 반환한다. 존재하지 않을 시 -1 반환
array.indexOf(1); // 0
array.indexOf('1'); // -1
.includes(argument) : 배열 내 특정 값을 확인하고 true or false를 반환한다.
array.includes(1); // true
array.includes('1'); // false
이때, includes 함수는 호환성 문제(IE 미지원) 가 존재한다. 따라서, IE 환경을 고려할 경우 배열 내 특정 값의 존재 여부를 확인할 때 indexOf를 활용한 함수를 사용할 수 있다.
배열은 일반적으로 반복문과 자주 사용되곤 하므로, 배열의 접근에 반복문이 조합된 예시를 살펴보자.
for(let n = 0; n < array.length; n++) {
console.log(array[n]);
}
// n개의 요소를 갖는 array의 모든 요소를 출력한다.
function sumArray(array) {
let sum = 0;
for(let n = 0; n < array.length; n++) {
sum += array[n];
}
return sum; // 배열 array의 모든 요소 합을 반환
}