데이터를 순차적으로 저장, 효율적 관리
장점: index를 통한 빠른 접근 가능
단점: 데이터 삽입/삭제 비용이 높음 (삽입과 삭제되는 데이터뿐만 아니라 다른 데이터들의 index도 모두 수정해야하기 때문)
const arr = ["a", "b", "c", "d"] arr.splice(1, 0) // index 1의 "b"를 삭제 console.log(arr) // "a", "c", "d" // 기존 index 2와 3에 있던 "c"와 "d"가 index 1, 2로 옮겨짐
FIFO(First-In, First-Out)
선입선출. 먼저 들어가면, 먼저 나온다.
array.push()
array.shift()
*unshift와 pop을 통해서도 구현이 가능하지만, 앞서 설명한 바와 같이 Array(배열) 앞쪽에 데이터를 추가하면 다른 데이터의 index를 변경하는데에 비용이 발생하기 때문에 push, shift로 구현
const arr = []; arr.push(1); arr.push(2); arr.push(3); console.log(arr); // [1, 2, 3] arr.shift(); // 1 console.log(arr); // [2, 3]
LIFO(Last-In, First-Out)
선입후출. 먼저 들어가면, 나중에 나온다.
array.push()
array.pop()
장점: 빠른 데이터 저장/읽기
단점: 데이터 최대 갯수 미리 확보, 자원 낭비 가능성
*재귀함수와 같이 함수 내부에서 다른 함수를 호출하면 stack의 구조를 따르게 된다.
const arr = []; arr.push(1); arr.push(2); arr.push(3); console.log(arr); // [1, 2, 3] arr.pop(); // 3 console.log(arr); // [1, 2]
댓글 환영
by.protect-me