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