데이터를 나열해 인덱스에 대응하도록 구성한 자료구조
배열의 특징
원하는 원소의 index를 알고 있다면 O(1)의 시간복잡도로 원소를 찾을 수 있다.
원소를 삭제하면 해당 index에 빈자리가 생긴다.
✅ 장점 : 인덱스로 데이터에 접근할 수 있어 접근이 빠르다.
✅ 단점 : 데이터의 추가와 삭제가 비효율 적이다.
❗️배열의 요소를 삭제하거나 추가할 경우 O(n)의 시간복잡도가 발생한다. 따라서 추가/삭제 등이 자주 사용되는 로직에서는 배열 사용을 지양해야 한다.
자바스크립트 배열
✅ 배열 생성
let arr1 = [];
let arr2 = [1,2,3,4,5];
fill
사용let arr3 = Array(10).fill(10);
from
사용const arr4 = Array.from(Array(5),function(v,k){
return k+1;
});
const arr5 = Array.from({ length:100},(_,i)=>i);
✅ 데이터 추가, 삭제
1. push
: Array의 맨 뒤에 요소 추가
arr1.push(1);//시간복잡도 : O(1)
arr1.push(2,3,4);//여러개를 한 번에 추가도 가능, 시간복잡도 : O(1)
splice
: 해당 인덱스에 요소 추가/삭제arr1.splice(1,0,22);//1번 인덱스부터 0개를 삭제하고 22를 추가 하겠다, 시간복잡도 : O(n)
arr1.splice(1,1)//1번 인덱스부터 1개를 삭제하겠다, 시간복잡도 : O(n)
pop
: 배열의 마지막 요소를 삭제하고 해당 요소를 반환해주는 함수arr1.pop();
shift
: 맨앞의 요소를 삭제하는 함수arr1.shift();
unshift
: 맨앞에 요소를 추가해주는 함수arr1.unshift(11);
slice
: 중간의 요소를 자르기arr1.slice(2,3);//2번 인덱스부터 3번 인덱스 까지의 요소를 잘라내겠다.
✅ 배열의 함수
join
: 배열을 문자열로 합쳐주는 함수let joindeArr1 = arr1.join(",");
reverse
: 배열을 거꾸로 뒤집어주는 함수let arr1Copy = arr1;
const revArr1 = arr1Copy.reverse()
concat
: 배열을 연결시켜주는 함수const contactedArr = arr1.concat(revArr1);
✅ 배열의 순회 : for of
사용
for (const item of arr1){
console.log(item);
}