✨ 배열
- 순서가 있는 컬렉션을 저장할 때 쓰는 자료구조
let arr = ['apple', 'banana', 'orange'];
- 배열 요소에는 0부터 시작하는 숫자가 매겨져 있다.(인덱스)
let arr = ['apple', 'banana', 'orange'];
// 배열의 첫번째 요소의 인덱스는 무조건 0부터
console.log(arr[0]); // apple
console.log(arr[1]); // banana
console.log(arr[2]); // orange
- 새로운 요소를 배열에 추가하는 것도 가능하다.
let arr = ['apple', 'banana', 'orange'];
arr[3] = 'lemon';
console.log(arr); // (4) ['apple', 'banana', 'orange', 'lemon']
- 'length' 프로퍼티로 배열의 길이, 즉 배열의 담긴 요소가 몇 개인지 알아낼 수도 있다.
let arr = ['apple', 'banana', 'orange'];
console.log(arr.length); // 3
🙋♀️ 'length' 프로퍼티?
- 배열에 조작을 가하면 length 프로퍼티가 자동으로 갱신된다.
- 배열 내 요소의 개수가 아니라 가장 큰 인덱스에 1을 더한 값
- length 프로퍼티의 또 다른 특징 중 하나는 쓰기가 가능하다
- 간단하게 배열을 비울 때 사용한다
let arr = ['a', 'b', 'c'];
arr.length = 0;
console.log(arr); // []
❌ 이렇게 쓰지 맙시다! ❌
- 값을 수동으로 증가시키면 아무 일도 일어나지 않으나
, 반대로 감소시키게 되면 배열이 잘린다.(짧아진 배열은 다시 되돌릴 수 없...😰)
🛠️ 배열 조작하기
- 자바스크립트로 큐와 스택 둘 다 만들 수 있다.
🔍 큐, 스택?
🖨️ Queue, 큐
- FIFO(First-In-First_Out), 선입선출 방식의 자료구조
- 줄을 서서 기다리는 것을 의미
- 한쪽 끝에서 삽입 작업, 다른 쪽 끝에서 삭제 작업이 양쪽으로 이루어진다.
- 삭제연산만 수행되는 곳을 front(프론트), 삽입연산만 이루어지는 곳을 rear(리어)로 정하며 각각의 연산 작업만 수행된다.
- 큐의 리어에서 이루어지는 삽입연산을 enQueue, 프론트에서 이루어지는 삭제연산은 dnQueue(디큐)라고 부른다.
- ex) 캐시 구현, 프린터 인쇄 대기열 등
🔙 Stack, 스택
- LIFO(Last-In-First-Out), 후입선출 방식의 자료구조
- 쌓아올린다는 것을 의미
- 정해진 방향으로만 쌓을 수 있고, 정한 곳을 통해서만 접근 할 수 있다.
- 삽입 연산을 push, 삭제 연산을 pop이라고 한다.
- 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다.
- 비어있는 스택에서 원소 추출하려고 할땐 stack underflow, 스택이 넘치는 경우는 stack overflow
- ex) 웹 브라우저 뒤로가기, 실행 취소(undo)
참조링크: https://devuna.tistory.com/22
1) push
- 배열의 맨 끝에 요소를 추가
- 요소를 배열 끝에 집어넣는다.
let fruits = ['apple', 'orange', 'banana'];
console.log(fruits); // (3) ['apple', 'orange', 'banana']
console.log(fruits.push('lemon'));
console.log(fruits); // (4) ['apple', 'orange', 'banana', 'lemon']
2) pop
- 배열 끝 요소를 제거하고 제거된 요소를 한다.
let fruits = ['apple', 'orange', 'banana', 'lemon'];
console.log(fruits); // (4) ['apple', 'orange', 'banana', 'lemon']
console.log(fruits.pop()); // 'lemon'
console.log(fruits); // (3) ['apple', 'orange', 'banana']
3) shift
- 배열 앞 요소를 제거하고, 제거한 요소를 반환합니다.
let fruits = ['apple', 'orange', 'banana', 'lemon'];
console.log(fruits); // (4) ['apple', 'orange', 'banana', 'lemon']
console.log(fruits.shift()); // apple
console.log(fruits); // (3) ['orange', 'banana', 'lemon']
4) unshift
- 배열 앞에 요소를 추가합니다.
let fruits = ['apple', 'orange', 'banana', 'lemon'];
console.log(fruits); // (4) ['apple', 'orange', 'banana', 'lemon']
console.log(fruits.unshift('melon'));
console.log(fruits); // (5) ['melon', 'apple', 'orange', 'banana', 'lemon']