배열에서 특정요소 자르기✂️ : slice(), splice()

김예지·2021년 10월 24일
0

[알고리즘] 개념

목록 보기
7/13

Array.slice([begin[,end]])

const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

console.log(animals.slice(2)); //end가 생략되면 start부터 끝까지 추출
// expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(2, 4));
// expected output: Array ["camel", "duck"]

console.log(animals.slice(1, 5));
// expected output: Array ["bison", "camel", "duck", "elephant"]

console.log(animals.slice(-2)); //배열 마지막에서 두개를 추출 
// expected output: Array ["duck", "elephant"]

console.log(animals.slice(2, -1));
// expected output: Array ["camel", "duck"]

console.log(animals); 
//Array ["ant", "bison", "camel", "duck", "elephant"]

Array.splice(start[, deleteCount[,item1[,item2...]]])

const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at index 1
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "June"]

months.splice(4, 1, 'May');
// replaces 1 element at index 4
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "May"]

months.splice(3, 2, 'Spring');
// replaces 2 element at index 3
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "Spring"]
  • 배열의 기존 요소를 삭제 또는 교체하거나, 새 요소를 추가하여 배열의 내용을 변경한다. (얕은복사, 즉 splice()를 사용하면 대입하지 않더라도 원본배열도 같이 변경된다.)
  • start는 배열의 변경을 시작할 인덱스이고, deleteCount는 배열에서 제거해야할 요소의 수이다. 만약 deleteCount가 0이라면 아무것도 제거하지 않고 새로운 요소를 삽입하는 것이다.
  • return arr.splice()를 하면, 삭제가 되는 요소가 리턴된다. 만약 삭제 후 배열을 가져오고 싶다면 arr.splice()수행 후 따로 return arr를 해줘야한다.
  • mdn
    https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

얕은복사(참조복사)와 깊은복사

  • 얕은복사(참조복사)는 복사하는 행위가 단순히 다른 이름을 붙이는 형태로 동작한다. 즉, 복사하더라도 같은 메모리를 바라보고있기 때문에 값을 변경하면 함께 변경된다.
    대입하지 않아도 값이 함께 변경된다.
    (배열의 값 복사)
  • 깊은복사: 복사 후 두 객체를 완전히 독립적으로 사용한다.
    대입을 통해 변경한 값을 가져올 수 있다.
    (자료형(ex. String, Number, boolean)의 값 복사)
profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

0개의 댓글