191027_TIL(Array in JS)

자바스크립트의 배열

삽입

.push 메소드를 사용해 새로운 항목을 배열 끝에 추가한다. 시간 복잡도는 O(1)이다.

삭제

.pop 메소드를 사용해 마지막으로 추가된 항목을 제거한다. 제거된 항목을 반환한다.

시간 복잡도는 O(1)이다.

.shift 메소드는 첫번째 항목을 제거하고 해당 항목을 반환한다.

접근

접근 연산은 인덱스를 지정함으로써 수행된다. 시간 복잡도는 O(1)이다.

1
2
const arr = [1,2,3,4];
arr[0]; // 1을 반환

반복

배열에 반복 접근 하는 여러 방법이 존재한다. 그 방법들 모두 시간 복잡도는 O(n)이다.

for(변수; 조건; 수정)

1
2
3
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}

for (in)

인덱스를 하나씩 호출하는 방식

1
2
3
4
5
let array = ['a','b','c'];

for (let index in array) { // 배열의 인덱스
console.log(index); // 0,1,2
}

for( of )

1
2
3
4
5
let array = ['a','b','c'];

for (let element in array) { // 배열의 항목
console.log(element); // 'a','b','c'
}

forEach()

forEach는 반복문 밖으로 빠져나오거나 배열 내 특정 항목들을 건너뛸 수 없다.

1
2
3
let array = ['a','b','c'];

array.forEach(element => { console.log(element)}); // 'a','b','c'

도움 함수

.slice(begin, end)

.slice()는 기존 배열을 수정하지 않고 해당 배열의 일부를 반환한다.

시작 인덱스만 매개변수로 전달하는 경우 끝 인덱스는 해당 배열의 마지막 인덱스 값이 된다.

매개변수로 아무것도 전달하지 않는 경우 .slice()는 배열의 복사본을 반환한다. array.slice() === array 는 false로 평가된다. 그 이유는 해당 배열이 위치한 메모리 주소가 다르기 때문이다.

자바스크립트의 배열은 참조 기반이다. 이는 배열에 신규 변수를 할당한 다음, 해당 신규 변수를 통해 배열을 변경하는 경우 변경 사항이 원래 배열에도 적용 된다는 것을 의미한다.

1
2
3
4
5
6
7
let array1 = [1,2,3,4];
let array2 = array1;

array2[0] = 10;

array1 // [10,2,3,4]
array2 // [10,2,3,4]

새로운 배열을 생성하기 위해서 Array.from()을 사용할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Array.from() 이용
let array1 = [1,2,3,4];
let array2 = Array.from(array1);

array2[0] = 10;

array1 // [1,2,3,4]
array2 // [10,2,3,4]


// .slice() 이용
let array1 = [1,2,3,4];
let array2 = array1.slice();

array2[0] = 10;

console.log(array1); // [1,2,3,4]
console.log(array2); // [10,2,3,4]

// Spread 연산자 이용
let array1 = [1,2,3,4];
let array2 = [...array1];

array2[0] = 10;

console.log(array1); // [1,2,3,4]
console.log(array2); // [10,2,3,4]

Array.from()의 시간 복잡도는 O(n)이다.

.splice(begin, size, element1, element2…)

.splice() 메소드는 기존 항목을 제거하거나 신규 항목을 추가함으로써 배열의 내용을 반환하고 변경한다.

.splice() 메소드는 시작 인덱스, 제거할 항목의 크기, 추가할 신규 항목들의 세 개의 매개변수를 받고 제거된 항목들을 반환한다.

1
2
3
let array = [1,2,3,4];

array.splice(1,2); // [2,3]을 반환. array = [1,4]
1
2
3
let array = [1,2,3,4];

array.splice(1,2,[5,6]); // [2,3]을 반환. array = [1,[5,6],4]

.splice() 의 시간 복잡도는 최악의 경우 O(n)이다.

.concat()

신규 항목을 배열의 맨 뒤에 추가한 다음, 해당 배열을 반환한다.

.length 속성

.length 속성을 더 작은 크기로 변경하면 배열에서 항목들이 제거된다. 배열의 길이에 제한을 둘 수 있다.

1
2
3
4
let array = [1,2,3,4];
array.length = 3;

console.log(array); // [1,2,3];

Spread 연산자

점 세 개 (…)로 표헌하며 제로 인자가 기대되는 곳에서 인자를 확장하는데 사용할 수 있다.

1
2
3
let array = [1,2,3,4];

Math.max(...array); // 4
Share