JS Array 관련

HOONEY·2022년 2월 16일
0

Javascript

목록 보기
7/8
post-thumbnail

추가

  • 배열을 추가하는 방법으로는 push가 있다.
  • 원본 배열 수정
const arr = [1, 2];

// 인수로 전달받은 모든 값을 원본 배열 arr의 마지막 요소로 추가하고 변경된 length값을 반환
const result = arr.push(3, 4);
console.log(result); // 4

// push는 원본 배열을 직접 변경함
console.log(arr); // [1, 2, 3, 4]
  • push는 성능 면에서 좋지 않다고한다.
  • push보다는 length를 사용하여 요소를 추가하자.
const arr = [1, 2];
arr[arr.length] = 3;

console.log(arr); // 1, 2, 3
  • 원본 배열을 건드리는 문제가 있기 때문에, push보다는 스프레드 문법을 사용하자.
const arr = [1, 2];

const arr2 = [...arr, 3];

console.log(arr2); // [1, 2, 3]

제거

  • 배열에서 요소 제거는 pop을 사용.
  • 원본 배열 수정
const arr = [1, 2];

// 원본 배열에서 마지막 요소를 제거하고 제거한 요소를 반환
const result = arr.pop();
console.log(result); // 2

console.log(arr); // [1]

앞에 추가

  • unshift는 인수로 전달받은 모든 값을 원본 배열의 제일 앞에 추가하고 변경된 length를 반환한다.
  • 원본 배열 수정.
  • 마찬가지로 스프레드 문법을 사용하는 것이 좋음.
const arr = [1, 2];

const result = arr.unshift(3, 4);
console.log(result); // 4

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

// 스프레드 문법
const arr2 = [3, 4, ...arr];
console.log(arr2); // [3, 4, 1, 2]

slice vs splice

slice

  • 원본 배열을 변경하지 않음
  • 인수로 전달된 범위의 요소들을 복사하여 배열로 반환
const arr = [1, 2, 3, 4];

// arr[0]부터 arr[1] 이전까지 복사하여 반환
arr.slice(0, 1); // [1]

// arr[1]부터 arr[2] 이전까지 복사하여 반환
arr.slice(1, 2); // [2]

splice

  • 원본 배열 수정
  • 원본 배열의 중간에 요소를 추가하거나 제거할 때 사용
const arr = [1, 2, 3, 4];

// 원본 배열의 인덱스의 1부터 2개를 제거하고 그 자리에 새로운 요소 20, 30 삽입
const result = arr.splice(1, 2, 20, 30);

console.log(result); // [2, 3]
console.log(arr)l // [1, 20, 30, 4]

includes

  • 항상 indexOf로 배열에 요소가 있는지 확인했었는데, 이제부터 includes를 사용.
const arr = [1, 2, 3];

arr.includes(2); // true

forEach vs map

forEach

  • 조건문과 반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억제하는 프로그래밍
  • 단순 반복문을 대체하기 위함
const arr = [1, 2, 3];
const arr2 = [];

arr.forEach(i => arr2.push(i **2));

console.log(arr2); // [1, 4, 9]

map

  • 콜백함수의 반환값들로 구성된 새로운 배열을 반환
  • 원본배열을 변경하지 않음
const arr = [1, 4, 9];
const arr2 = arr.map(i => Math.sqrt(i));

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

console.log(arr2); // [1, 2, 3]
profile
기록하는 블로그

0개의 댓글