[JavaScript] 배열의 기본 메서드 2 - 배열 변경

Rachaen·2023년 3월 14일

1. push, unshift

  • 배열에 값을 추가
    • 결과의 길이를 반환
  • 특징
    • 수정된 배열의 길이를 반환
    • 부수효과: 원본 배열을 변경(but 스프레드 문법을 권장)
    • unshift가 이후 요소드를 밀어내야 하므로 pop보다 더 느림
  • push: 값을 뒤에 추가
const arr = [1, 2, 3];
const x = arr.push(4);

console.log(x, arr);	// 4 [1, 2, 3, 4]

const y = arr.push(5, 6, 7); // 최종 길이 반환

console.log(y, arr);	// 7 [1, 2, 3, 4, 5, 6, 7]
  • unshift: 값을 앞에 추가

2. pop, shift

  • 배열에서 값을 제거하여 반환
  • shift가 이후 요소들을 당겨야 하므로 pop보다 더 느림
  • pop: 값을 뒤에서 제거하여 반환
const arr = [1, 2, 3, 4, 5];
const x = arr.pop();
console.log(x, arr);	// 5 [1, 2, 3, 4]

const y = arr.pop();
console.log(y, arr);	// 4 [1, 2, 3]
  • shift: 값을 앞에서 제거하여 반환
const arr = [1, 2, 3, 4, 5];
const x = arr.shift();
console.log(x, arr);	// 1 [2, 3, 4, 5]

const y = arr.shift();
console.log(y, arr);	// 2 [3, 4, 5]

3. splice

  • 원하는 위치에 요소(들)을 추가 및 삭제
  • 2개 이상의 인자를 받음
    • start: 배열 변경을 시작할 위치
    • deleteCount: 제가할 요소의 개수
    • item(s): 추가할 하나 이상의 요소
const arr = [1, 2, 3, 4, 5, 6, 7];

// 2번 인덱스부터 2개 요소 제거
arr.splice(2, 2);

console.log(arr);	// [1, 2, 5, 6, 7]
// 3번 인덱스부터 요소 제거 없이 'a' 추가
arr.splice(3, 0, 'a');

console.log(arr);	// [1, 2, 5, 'a', 6, 7]

// 1번 인덱스부터 3개 요소 제거 후 '가', '나', '다' 추가
arr.splice(1, 3, '가', '나', '다');

console.log(arr);	// [1, '가', '나', '다', 6, 7]
  • 배열의 delete - empty 값을 남김
const arr = [1, 2, 3, 4, 5];
delete arr[2];

console.log(arr);	// [1, 2, empty, 4, 5]
// 💡 때문에 배열의 값 삭제에는 splice 사용
arr.splice(2, 1);	

console.log(arr);	// [1, 2, 4, 5]

4. fill

  • 배열을 특정 값으로 채움
// 중간의 빈 값도 채움
const arr1 = [1, 2, , , 4, 5];
arr1.fill(7);
console.log('1.', arr1);	// 1. [7, 7, 7, 7, 7, 7]

// 💡 특정 값으로 채운 배열 생성시 유용
const arr2 = new Array(10);
arr2.fill(1);
console.log('2.', arr2);	// 2. [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

// 인자가 둘일 때: (채울 값, ~부터)
arr2.fill(2, 3);
console.log('3.', arr2);	// 3. [1, 1, 1, 2, 2, 2, 2, 2, 2, 2]

// 인자가 셋일 때: (채울 값, ~부터, ~ 전까지)
arr2.fill(3, 6, 9);
console.log('4.', arr2);	// 4. [1, 1, 1, 2, 2, 2, 3, 3, 3, 2]

5. reverse

  • 배열의 순서를 뒤집음
const arr = [1, 2, 3, 4, 5, 6, 7];
console.log(arr);	// [1, 2, 3, 4, 5, 6, 7]

// 💡 메서드 자체도 뒤집힌 배열을 반환
arrRev = arr.reverse();
// 원본 배열 뒤집힘
console.log(arr, arrRev);	// [7, 6, 5, 4, 3, 2, 1] [7, 6, 5, 4, 3, 2, 1]

arrRev[0] = 0;
// ⭐ 반환된 배열은 원본과 같은 배열을 참조! (복사가 아님)
console.log(arr, arrRev);	// [0, 6, 5, 4, 3, 2, 1] [0, 6, 5, 4, 3, 2, 1]
profile
개발을 잘하자!

0개의 댓글