배열 회전시키기

Wynter24·2023년 10월 3일
0

문제

문제예시


처음 작성한 코드

function solution(numbers, direction) {
    if(direction==='right') {
        let standard = numbers[numbers.length-1]
        numbers.pop()
        numbers.unshift(standard)
        return numbers
    } else {
        let standard = numbers[0]
        let newArr = numbers.splice(1)
        newArr.push(standard)
        return newArr
    }
}

다른 사람 코드

function solution(numbers, direction) {
    if(direction==='right') {
        numbers.unshift(numbers.pop())
    } else {
        numbers.push(numbers.shift())
    }
    return numbers
}

비교 분석

메소드 정의

unshift() : 새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이 반환
pop() : 배열에서 마지막 요소를 제거하고 그 요소 반환

push() : 배열의 에 하나 이상의 요소를 추가하고, 배열의 새로운 길이 반환
shift() : 배열에서 첫 번째 요소제거하고, 제거된 요소 반환

slice() : 어떤 배열의 begin 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환. 원본 배열은 바뀌지 않는다.

slice 메서드는 얕은 복사를 하기 때문에 slice된 객체를 사용하기 위해서는 새로운 객체에 할당해야 하는 번거로움이 있다. 원본 배열을 바꾸어 제거된 요소를 바로 push하기 위해 shift 메서드를 사용하는 것이 좋을 것 같다.

각 메서드가 무엇을 반환하는지 잘 파악하고 그 값을 배열에 바로 반영시킨다면 더욱 간결한 코드를 작성할 수 있다.


참고자료
mozilla

profile
내가 다시 보려고 쓰는 개발.log

0개의 댓글

관련 채용 정보