자바스크립트의 reverse()
기능을 알아봅시다.
const arrayOne = ['a', 'b', 'c']
const arrayTwo = arrayOne.reverse()
console.log(arrayTwo) //['c', 'b', 'a']
다른 언어와 마찬가지로, 자바스크립트도 아주 쉽게 reverse()
를 통해 리스트를 역으로 만드는 게 가능합니다. 그런데, 여기서 주의할 점이 있습니다. 요 Array.prototype.reverse()
는 기존 리스트에게 영향을 줍니다.
즉, arrayTwo를 만들어도 arrayOne도 리버스 되어 있다는 소리입니다.
기존 리스트에 영향을 주지 않고 reverse하는 몇가지 방법
slice 사용하기
const arrayOne = ['a', 'b', 'c'];
const arrayTwo = arrayOne.slice().reverse();
console.log(arrayOne); // ['a', 'b', 'c']
console.log(arrayTwo); // [ 'c', 'b', 'a' ]
spread 사용하기
const arrayOne = ['a', 'b', 'c'];
const arrayTwo = [...arrayOne].reverse();
console.log(arrayOne); // ['a', 'b', 'c']
console.log(arrayTwo); // [ 'c', 'b', 'a' ]
reduceRight 사용하기
const arrayOne = ['a', 'b', 'c'];
const arrayTwo = arrayOne.reduceRight((accumulator, value) => {
accumulator.push(value);
return accumulator
}, []);
console.log(arrayOne); // ['a', 'b', 'c']
console.log(arrayTwo); // [ 'c', 'b', 'a' ]
이 세가지의 속도를 비교한 것은 다음과 같습니다. 다음 테스트 케이스는 이 링크를 통해 테스트 가능합니다. ….reverse vs .slice.reverse · jsPerf
'front-end > javascript' 카테고리의 다른 글
[javascript 기초] 리스트에 새 요소 추가/삭제 (push, concat 등) (0) | 2021.07.21 |
---|---|
[JS] MVC 패턴과 MVVM 패턴 (0) | 2020.04.26 |
[javascript] 자바스크립트의 sort( )는 문자정렬이구나... (문자, 숫자 ,Object 정렬법) (7) | 2020.04.21 |
[javascript] 자바스크립트 es6 map (0) | 2020.02.02 |
[javascript] 바나나 문제 / 0.1+0.2 === 0.3이 틀린 이유 (0) | 2020.01.29 |
댓글