배열 (Array) 이란?
JavaScript 에서 배열은 크기 조정이 가능하고, 다양한 데이터 형식을 혼합하여 저장할 수 있는 array 객체
let arr = ['Apple', 1, 3.14, true, function sayHI() {console.log('HI')}];
배열에 항목 추가/삭제하기
let arr = ['apple', 'banana', 'lemon', 'orange'];
shift() : 배열의 첫 요소 삭제
arr.shift();
console.log(arr); // ['banana', 'lemon', 'orange']
pop() : 배열의 마지막 요소 삭제
arr.pop();
console.log(arr); // ['apple', 'banana', 'lemon']
unshift(value) : 배열의 첫 요소로 값 추가
arr.unshift(value);
console.log(arr); // ['cherry', 'apple', 'banana', 'lemon', 'orange']
push(value) : 배열의 마지막 요소로 값 추가
arr.push(value);
console.log(arr); // ['apple', 'banana', 'lemon', 'orange', 'mango']
성능🔎
push/pop 은 빠르고, shift, unshift 는 느림
- push 와 pop 은 배열의 맨 뒤에 값을 추가하거나 지움 -> 다른 요소들의 인덱스는 그대로 두고 맨 뒤의 인덱스만 건드리면 됨
- shift 와 unshift 는 배열의 맨 앞에 값을 추가하거나 지우기 때문에 다른 요소들의 인덱스를 한 칸 씩 앞/뒤로 이동시켜줘야 함 -> 배열에 요소가 많을 수록 이동에 걸리는 시간이 길고 메모리 관련 연산도 많아짐
splice(index [, 삭제할 요소 개수, 추가할 요소])
let arr = ['apple', 'banana', 'lemon', 'orange'];
// splice(index): index 부터 끝까지 다 삭제
arr.splice(1);
console.log(arr); // ['apple']
// splice(index, n): index 부터 n개의 요소 삭제
arr.splice(1, 2);
console.log(arr); // ['apple', 'orange']
// splice(index, n, 추가할 요소): index 부터 n개의 요소 삭제하고 그 자리에 추가할 요소 집어넣음
arr.splice(1, 2, 'cherry', 'mango');
console.log(arr); // ['apple', 'cherry', 'mango', 'orange']
- 삭제하지 않고 요소만 추가하기
arr.splice(1, 0, 'watermelon');
console.log(arr); // ['apple', 'watermelon', 'banana', 'lemon', 'orange']
- 값 교체하기
arr.splice(1, 1, 'watermelon');
console.log(arr); // ['apple', 'watermelon', 'lemon', 'orange']
배열에서 특정 값 찾기/확인하기
indexOf(value)/lastIndexOf(value)
- indexOf 는 앞에서부터 배열을 탐색해서 값이 있다면 index 를 리턴, 값이 없다면 -1 을 리턴
let arr = ['apple', 'banana', 'lemon', 'orange'];
console.log(arr.indexOf('lemon')); // 2
- lastIndexOf 는 뒤에서부터 배열을 탐색해서 값이 있다면 index 를 리턴, 값이 없다면 -1 을 리턴
let arr = ['apple', 'banana', 'lemon', 'orange'];
console.log(arr.lastIndexOf('lemon')); // 2
includes(value)
- indexOf/lastIndexOf 가 특정 값을 찾아서 값의 index 를 알려준다면, includes 는 배열 안에 값이 있는지의 여부만 궁금할 때 사용
let arr = ['apple', 'banana', 'lemon', 'orange'];
console.log(arr.includes('starawberry')); // false
배열 복사
JavaScript 의 배열 복사는 얕은 복사
객체의 얕은 복사는 복사본의 속성이 복사본이 만들어진 원본 객체와 같은 참조 (메모리 내의 같은 값을 가리킴)를 공유하는 복사
let arr = ['apple', 'banana', 'lemon', 'orange'];
// 전개 구문 사용
let copyArr = [...arr];
// from() 메서드 사용
let copyArr = Array.from(arr);
// slice() 메서드 사용
let copyArr = arr.slice();
배열 병합
concat(array)
let arr1 = ['apple', 'banana', 'lemon', 'orange'];
let arr2 = ['cherry', 'mango'];
let mergeArr = arr1.concat(arr2);
console.log(mergeArr); // ['apple', 'banana', 'lemon', 'orange', 'cherry', 'mango']
// 원본 배열은 변경 x
console.log(arr1); // ['apple', 'banana', 'lemon', 'orange']
console.log(arr2); // ['cherry', 'mango']
📖 References 📖
https://ko.javascript.info/array
배열
ko.javascript.info
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array
Array - JavaScript | MDN
다른 프로그래밍 언어의 배열과 마찬가지로, Array 객체는 여러 항목의 컬렉션을 단일 변수 이름 아래 저장할 수 있고, 일반적인 배열 연산을 수행하기 위한 멤버가 있습니다.
developer.mozilla.org
https://developer.mozilla.org/ko/docs/Glossary/Shallow_copy
얕은 복사 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN
객체의 얕은 복사는 복사본의 속성이 복사본이 만들어진 원본 객체와 같은 참조 (메모리 내의 같은 값을 가리킴)를 공유하는 복사입니다. 따라서 원본이나 복사본을 변경하면, 다른 객체 또한
developer.mozilla.org
얕은 복사 vs 깊은 복사
JS에서 변수가 원시값을 갖는 지, 참조값을 갖는 지에 따라, 복사 시 얕은 복사 또는 깊은 복사가 이루어진다. 얕은 복사와 깊은 복사가 어떻게 다른 지, 이러한 차이는 왜 발생하는 지 알아보자.
velog.io
'웹 > JavaScript' 카테고리의 다른 글
[JavaScript] 기초 - 데이터와 형태 (0) | 2024.07.29 |
---|---|
Promise 객체 (0) | 2024.05.27 |
[JavaScript/자바스크립트] 모듈, pakage.json, pakage-lock.json (0) | 2024.05.18 |
JS Date 객체 (1) | 2024.01.05 |
JS 객체와 속성 (0) | 2024.01.04 |