TIL 13 , slice splice

heyho9292·2021년 8월 4일
0

JavaScript

목록 보기
9/21
post-thumbnail

slice

slice 메서드는 배열 내의 특정한 요소의 index 범위에 따라 새로운 배열을 리턴합니다.

원본 배열을 변형시키지 않습니다.

그렇기 때문에 이 메서드를 사용할 때는 slice 메서드를 적용한 새로운 변수를 선언해주어야 합니다.

slice(시작점,) 



let nums = [1,2,3,4,5]
let nums_new = nums.slice(1,4)
 
console.log(nums) // [ 1, 2, 3, 4, 5 ]
console.log(nums_new) // [ 2, 3, 4 ]



인자에 음수가 들어가는 경우도 있습니다.


let nums = [1,2,3,4,5]
let nums_new = nums.slice(-2)
 
console.log(nums) // [ 1, 2, 3, 4, 5 ]
console.log(nums_new) // [ 4, 5 ]





array 감옥에 갇힌 2를 구해주세요.

단, slice 메서드를 사용해야 하며, slice 메서드 괄호 안에는 음수만 들어갈 수 있습니다.

let prisoners = [[0, 1],[1,2],[0,0]];


function saveNumberTwo(x) {
  let temp = x.slice(-2, -1) // [[1,2]] 
  // slice 메서드의 괄호 안에 음수만 넣어주세요
  let answer = temp[0][1];
  // 변수 answer에 특정한 값을 대입해주세요.
  
  return answer;
}
saveNumberTwo(prisoners) // 2





splice

splice 메서드는 배열 내의 특정한 요소를 삭제하거나, 다른 요소로 대치하거나 새로운 요소를 추가할 때 사용합니다. slice 와 다르게 원본 배열을 변형시킵니다.

splice 메서드를 쓸 때는 인자의 순서에 주의해야 합니다.

splice(시작점, 삭제할 갯수, 추가하고싶은 요소.)
let num = [1,2,3,4,5];
num.splice(2,1,10); //index 2에서 1개를 지우고 10을 추가한다.
 
console.log(num); // [ 1, 2, 10, 4, 5 ]




하나도 제거하지 않고, 2번 인덱스에 "drum" 추가

var myFish = ['angel', 'clown', 'mandarin', 'sturgeon'];
var removed = myFish.splice(2, 0, 'drum');

// myFish is ["angel", "clown", "drum", "mandarin", "sturgeon"]
// removed is [], no elements removed

3번 인덱스에서 한 개 요소 제거

var myFish = ['angel', 'clown', 'drum', 'mandarin', 'sturgeon'];
var removed = myFish.splice(3, 1);

// removed is ["mandarin"]
// myFish is ["angel", "clown", "drum", "sturgeon"]





'건강'을 삭제하고 '코딩실력'을 추가해보자.

function wantToget() {
  let world = ['돈', '명성', '사랑', '건강', '테슬라', '아파트'];
  
  	world.splice(3,1,'코딩실력');
  
  	return world;
}



다른 예제

175cm 이상인 뒤에 3명만 뽑아보자.

let lane1 = [{'철수':'150cm'}, {'영희': '153cm'}, {'바둑이': '155cm'},
             {'밍키': '160cm'}, {'살구' : '168cm'}, 
             {'두팔': '175cm'}, {'여름': '180cm'}, {'소헌': '181cm'}];
 



function extractOver175(list) {
  //괄호 안은 음수만 들어가야 합니다.
  let extractedPeople = list.splice(-3)

  return extractedPeople;
}
extractOver175(lane1)





10 이상의 숫자만 배열에 담아 리턴하는 함수

let numBox = [[1,2,15,3],[4,5,6,10],[31,7,8,9,20]];
 
function extractOverTen(list) {
  let temp = [];
  for(let i=0; i < list.length; i++) {
    for(let j=0; j <= list[i].length; j++) {
      if(list[i][j] >= 10) {
        temp.push(list[i][j]);
      }  
    }
  }
  return temp;
}
 
extractOverTen(numBox) // [ 15, 10, 31, 20 ]

바구니에서 곰팡이를 제거하는 함수를 작성해주세요!

시장을 봐왔는데 바구니를 보니 곰팡이가 피어있습니다.
바구니에서 곰팡이를 제거하는 함수를 작성해주세요!


결과 이렇게 나오도록.
removeGerm(basket) // [ [ '양파' ], [ '빵', '딸기잼' ], [ '귤', '사과' ] ];




let basket = [['양파','곰팡이'],['곰팡이','빵','딸기잼'],['귤','곰팡이','사과']];



function removeGerm(arr) {
  for(i=0; i<arr.length; i++) {
    for(j=0; j<arr[i].length; j++)
      if(arr[i][j] === '곰팡이') {
        arr[i].splice(j, 1)
      }
  }
  return arr;
}
console.log(removeGerm(basket))

//[['양파'],['빵','딸기잼'],['귤','사과']];

profile
"되는 방법을 찾자"

1개의 댓글

comment-user-thumbnail
2021년 8월 8일

해호님 덕분에 곰팡이 문제 이해가서 풀리네용~ 감사합니다 :) 끝까지화이팅!

답글 달기