코플릿 / 배열

support·2021년 9월 3일
0

코딩테스트

목록 보기
11/11
post-thumbnail

✏️문제

짝수만을 요소로 갖는 배열을 리턴해야 합니다.

입력으로는 number 타입을 요소로 갖는 배열, arr[i]는 양의 정수이고
출력은 배열을 리턴해 줘야 했다

📝해설

function EvenNumbers(arr) {
    let result = []
    for(let n = 0; n < arr.length; n++) {
    if(arr[n] % 2 === 0) {
      result.push(arr[n])
      } 
    }
    return result
}

짝수를 리턴하는 문제를 풀때 위의 코드처럼
결과를 저장해줄 받을 배열을 만든 뒤
그 배열 안에 짝수인 숫자만 넣는 식으로 풀었었다

이번에 페어분과 함께 문제를 풀었을때 다른방식으로 풀어서
아 이렇게 문제를 풀 수도 있구나 다른풀이방식을 알게 되어서 좋았다

function EvenNumbers(arr) {
  // 홀수 
  for(let n = 0; n < arr.length; n++) {
    if(arr[n] % 2 !== 0) {
      arr.splice(n, 1); 
      n--; 
    } 
  } return arr
}

배열 안에서 홀수인 숫자만 제거하는 방식으로 문제를 풀어보기로 했다
배열에서 특정 값만 삭제하는 방법을 검색 해봤더니
splice를 활용해서 삭제 할 수 있었다
이때 splice를 쓸때 주의해야 할 것은 원본 배열의 원소가 삭제되고
배열의 길이가 변하기 때문에 원소를 하나 삭제 한 뒤에는
배열의 index값을 참조하는 n의 값을 하나 감소(n--) 시켜 줘야 한다

📝splice : 특정 index의 값 추가, 삭제

unshift(), shift(), push(), pop()을 사용해서
앞과 뒤에 원소를 추가 삭제 할 수 있었고
splice를 사용하면 배열의 앞 뒤 중간에 원소를 추가 삭제 할 수 있다

array.splice(1,1,'a')

splice() 함수는 start, deleteCount, items원소 목록을 입력 받는다
start index부터 deleteCount만큼의 원소를 삭제하고,
items원소를 start index 위치에 추가한다

splice로 index의 값 추가

let arr = [3, 4, 5];
arr.splice(0, 0, 1, 2);
// [ 1, 2, 3, 4, 5] 
// 앞쪽에 추가

let arr1 = [1, 2, 3];
arr1.splice(arr1.length, 0, '4', '5');
// [1, 2, 3, 4, 5]
// 뒤쪽에 추가

let arr2 = [1, 2, 3];
arr2.splice(1, 0, 10, 11);
// [1, 'a', 'b', 2, 3]
// 중간에 추가 

let arr3 = [1, 2, 3];
arr3.splice(3, 0, 4)
// [1, 2, 3, 4]
// 삭제하지 않고 추가
//(추가하고싶은 값이 들어갈 인덱스, 삭제할원소 0, 추가할 값)

splice로 index의 값 삭제


let arr1 = [ 10, 11, 5, 2, 3 ];
arr1.splice(0, 3);
// [2, 3]
// 앞에서 3개 원소 삭제

let arr2 = [1, 10, 11, 2, 3];
arr2.splice(1, 2);
// [1, 2, 3]
// index 1부터 중간 원소 2개 삭제

let arr3 = [1, 2, 3, '10'];
arr3.splice(arr3.length - 1, 1);
// 마지막 원소 삭제

index의 값을 삭제할때
(삭제할값의 시작index, 삭제할원소의 갯수)
추가할 값이없으니 3번째 파라미터는 지정하지 않아도 된다

0개의 댓글

관련 채용 정보