const arr = [1,2,3];
// 반복문으로 자료구조를 순서대로 순회하기 위해서는 자료구조의 요소에 순서대로 접근할 수 있어야하며
// 자료구조의 길이를 알 수 있어야 한다.
for (let i = 0; i < arr.length; i++){
console.log(arr[i]); // 1 2 3
}
자바스크립트에서 배열은 일반적인 다른 코드에서의 배열과 다르게 배열의 동작을 흉내 낸 특수한 객체이다. 일반적인 배열보다 성능적인 면에서 느리나, 요소를 삽입 또는 삭제하는 경우에는 일반적인 배열보다 빠른 성능을 기대할 수 있다.
length 프로퍼티는 요소의 개수, 즉 배열의 길이를 나타내는 0이상의 정수를 값으로 갖는다.
[].length // 0
[1,2,3].length // 3
const arr = [1, 2, 3];
arr.push(4);
// 요소를 추가하면 length 프로퍼티의 값이 자동 갱신된다.
console.log(arr.length) // 4
const arr1= [1,2,3,4,5];
// 현재 length 값보다 작은 숫자 값을 length 프로퍼티에 할당.
arr1.length = 3;
// 배열의 길이가 5에서 3으로 줄어든다
// 단, 현재 프로퍼티 값보다 큰 숫자 값을 할당한다 해도 배열의 길이가 늘어나지 않는다.
console.log(arr1); // [1,2,3]
const sparse = [,2, ,4];
// 희소 배열의 length 프로퍼티 값은 요소의 개수와 일치하지 않는다.
console.log(sparse.length); // 4
// 배열 리터럴 생성 방식
// 가장 일반적 이다.
const arr = [1,2,3]
// Array 생성자 함수 생성 방식
const arr1 = new Array(10);
console.log(arr1.length); // 10, 내용이 없는 배열. 길이만 10.
const arr2 = new Array(1,2,3); // [1,2,3] 전달된 인수가 2개 이상이거나 숫자가 아닌 경우 인수를 요소로 갖는 배열 생성
// Array.of는 전달된 인수가 1개라도 요소로 갖는 배열 생성
const arr3 = new Array(1) // [1]
// Array.fome메서드는 유사 배열 객체 또는 이터러블 객체를 인수로 전달받아 배열로 반환한다.
Array.from({ length : 2, 0: 'a', 1: 'b' }); // -> {'a','b'}
// 이터러블은 변환하여 배열을 생성한다. 문자열은 이터러블이다
Array.from('Hello'); // -> {'H','e','l','l','o'}
const arr = [1,2];
console.log(arr[0]); // 1
console.log(arr[1]); // 2
const arr = [0];
arr[1] = 1;
console.log(arr); // [0,1]
// 현재 배열의 length 프로퍼티 값보다 큰 인덱스를 새로운 요소로 추가하면 희소 배열이 된다.
// 이미 요소가 존재하는 요소에 값을 재할당하면 갱신된다.
// 인덱스 요소에 0 이상의 정수가 아닌 이외의 값을 사용하면 프로퍼티가 생성되고, length 값에 영향을 주지 않는다.
const arr1 = [1,2];
arr1['foo'] = 3;
arr.bar = 4;
arr[1,1] = 5;
arr[-1] = 6;
console.log(arr); // [1,2,foo: 3, bar: 4, '1,1':5, '-1':6]
console.log(arr.length); //2
const arr = [1,2,3];
// arr[1]부터 1개의 요소를 제거
arr.splice(1,1);
console.log(arr); // [1,3]
9-1 Array.isArray는 생성자 함수의 정적 메서드이며 전달된 인수가 배열이면 true 배열이 아니면 false를 반환한다.
// true
Array.isArray([]);
Array.isArray([1,2]);
//false
Array.isArray();
Array.isArray({});
Array.isArray(1);
9-2 indexof 메서드는 원본 배열에서 인수로 전달된 요소를 검색하여 인덱스를 반환한다. ES7에는 include 메서드가 도입됬다.
9-3 push 메서드는 인수로 전달받은 모든 값을 원본 배열의 마지막 요소로 추가하고 변경된 length 프로퍼티 값을 반환한다.
9-4 pop 메서드는 원본 배열에서 마지막 요소를 제거하고 제거한 요소를 반환한다.
9-5 unshift 메서드는 인수로 전달받은 모든 값을 원본 배열의 선두에 요소로 추가하고 변경된 length 프로퍼티 값을 반환한다.
9-6 shitt 메서드는 원본 배열에서 첫 번째 요소를 제거하고 제거한 요소를 반환한다.
9-7 concat 메서드는 인수로 전달된 값을 원본 배열의 마지막 요소로 추가한 새로운 배열을 반환한다. 원본 배열은 변경되지 않는다.
9-8 splice 메서드는 3개의 매개변수가 있으며 원본 배열을 직접 변경한다. 첫 번째 인수는 시작 인덱스, 두 번째 인수는 제거할 요소의 개수, 세 번째 인수는 제가힌 위치에 삽입할 요소를 의미한다.
9-9 slice 메서드는 인수로 전달된 범위의 요소들을 복사하여 배열로 반환한다. 원본 배열은 변경되지 않는다.
9-10 join 메서드는 원본 배열의 모든 요소를 문자열로 변환한 후, 인수로 전달받은 문자열, 즉 구분자로 연결한 문자열을 반환한다.
9-11 reverse 메서드는 원본 배열의 순서를 반대로 뒤집는다. 이때 원본 배열이 변경된다.
9-12 fill 메서드는 인수로 전달받은 값을 배열의 처음부터 끝까지 요소로 채운다. 이때 원본 배열이 변경된다.
9-13 includes 메서드는 배열 내에 특정 요소가 포함되어 있는지 true또는 false를 반환한다. 첫 번째 인수로 검색할 대상을 지정한다.
9-14 flat 메서드는 인수로 전달하 깊이만큼 재귀적으로 배열을 평탄화 한다.