배열
- 배열은 순서가 있는값
- 값 = 요소 (element)
- 순서 = 인덱스 (index), 0부터 번호를 매긴다.
let myNumber = [73, 98, 86, 61, 96];
myNumber[3]
myNumber[3] = 200;
let myNumber = [[13,30], [73,8], [44, 17]];
myNumber[1]
myNumber[1][0]
배열 메서드
- arr.length : 배열 길이 반환한다
- arr.push(값) : mutable, 배열 끝에 새로운 element 추가, 변경된 배열의 길이를 반환한다.
- arr.pop() : mutable, 배열의 마지막 element 삭제하고, 삭제된 element를 반환한다.
- arr.shift() : mutable,배열 제일 앞의 element 삭제하고, 삭제된 element를 반환한다.
- arr.unshift(값) : mutable,배열 제일 앞에 element 삽입. 변경된 배열의 길이를 반환한다.
- Array.isArray() : mutable,타입이 배열임을 확인한다.
- arr.splice(start, count, item) : 배열의 요소를 삭제, 교체, 추가
- Return value : 제거한 요소를 담은 배열 반환, 제거하지 않으면 빈 배열 반환
- start : 변경 시작 인덱스, 음수이면 역순으로 조회
- count : 삭제할 요소의 수, 생략하거나 남은 배열 길이보다 값이 크면 전체 삭제,
새로운 값을 추가하려면 0 입력
- item : 추가할 요소, 여러개 입력가능, 생략하면 제거만 함
splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2, itemN)
const myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
const removed = myFish.splice(2, 0, 'drum', 'guitar');
const myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
const removed = myFish.splice(3, 1);
const myFish = ['angel', 'clown', 'drum', 'sturgeon'];
const removed = myFish.splice(2, 1, 'trumpet');
const myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
const removed = myFish.splice(-2, 1);
- arr.join(값) : immutable, 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
const a = ["Wind", "Water", "Fire"];
a.join();
a.join(", ");
a.join(" + ");
a.join("");
- arr.slice(start, end) : immutable, start부터 end까지 인덱스를 잘라낸다.
- arr.concat() : immutabl,인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환한다. 추가된 새로운 배열을 반환.
const alpha = ['a', 'b', 'c'];
const numeric = [1, 2, 3];
alpha.concat(numeric);
const num1 = [1, 2, 3];
const num2 = [4, 5, 6];
const num3 = [7, 8, 9];
num1.concat(num2, num3);
- str.split():immutable,값을 기준으로 요소를 나눈 배열을 반환한다.
- arr.indexOf(값) : 배열의 전달인자 값이 위치한 index 값을 반환하고, 없으면 -1 반환한다.
- arr.includes(값) : 배열의 전달인자 값의 유무를 boolean 값으로 반환한다.
- arr.sort() : 배열을 정렬하여 반환
arr.sort((a, b) => a - b)
arr.sort((a, b) => b - a)
배열의 길이와 인덱스를 활용하여 배열 내부에 있는 모든 요소를 순회할 수 있다.
function arrToString(arr) {
let result = 0;
for (let i = 0; i < arr.length; i++) {
if(i % 2 === 0) {
result = result + arr[i];
}
}
return result;
}
모든 요소를 순회할 때는 for of문을 사용한다.
function arrToString(arr) {
let result = 0;
for (let el of arr) {
if(i % 2 === 0) {
result = result + el;
}
}
return result;
}
얕은 복사
- 객체를 직접 대입하는 경우 참조에 의한 할당이 이루어지므로 둘은 같은 데이터(주소)를 갖음
- 두 객체가 같은 데이터(주소)를 갖고 있고 같은 주소를 참조하는 것
- 객체의 참조 복사 객체(배열 포함)의 경우 = 를 이용하여 복사하면 참조 복사만 가능함
깊은 복사(deep copy)
- 자료형의 값 복사
- 값을 완전히 복사하는 것
- = 이용하여 복사하면 두 변수가 완전히 독립성을 갖는 것