Array.prototype.reverse()
사용법
reverse()
함수는
배열의 요소 순서를 역순(reverse)으로 정렬하는 함수입니다.
즉, 첫 번째 요소는 마지막 요소가 되고 마지막 요소는 첫 번째 요소가 됩니다.
reverse()
함수는 원본 배열을 직접 수정하며, 새로운 배열을 반환하지 않습니다.
const arr = [1, 2, 3, 4, 5];
const reversedArr = arr.reverse();
/* 배열의 요소 순서를 역순으로 정렬합니다. */
console.log(reversedArr); // 출력: [5, 4, 3, 2, 1]
/* 원본 배열을 직접 수정합니다. */
console.log(arr); // 출력: [5, 4, 3, 2, 1]
reverse()
함수의 형식은 다음과 같습니다.
구문
arr.reverse()
arr
은 reverse()
함수를 적용할 원본 배열입니다.
매개변수
없습니다.
반환 값
원본 배열의 요소 순서를 역순으로 변경하고, 그 결과로 해당 배열을 반환합니다.
반환 값은 변경된 원본 배열 자체입니다. 새로운 배열을 반환하지 않습니다.
주의할 점
주의할 점은 reverse()
함수가 기존 원본 배열을 직접 수정한다는 것입니다.
즉, reverse()
함수를 호출하면 호출한 원본 배열 자체가 역순으로 변경되며, 새로운 배열이나 복사본이 생성되지 않습니다. 따라서 이 함수를 사용하는 경우 원본 배열이 변경되는 것을 고려해야 합니다. 만약 원본 배열을 변경하고 동시에 원본 배열을 유지하고 싶다면, 복사본을 만들어서 reverse()
를 적용하거나 toReversed()
함수를 사용하세요.
복사본을 만들어서 reverse()
를 적용하기 - 1
slice()
함수를 사용해서 원본 배열 복사하기
const originalArray = [1, 2, 3, 4, 5];
// 원본 배열의 복사본을 생성
const copiedArray = originalArray.slice();
// 복사본에 reverse() 함수를 적용
copiedArray.reverse();
console.log(originalArray); // [1, 2, 3, 4, 5] (원본 배열은 변경되지 않음)
console.log(copiedArray); // [5, 4, 3, 2, 1] (역순으로 된 배열)
코드 부연설명
배열의 slice()
함수는 배열의 특정 범위의 요소를 잘라내어(slice) 추출한 결과를 새로운 배열로 반환합니다.
복사본을 만들어서 reverse()
를 적용하기 - 2
const originalArray = [1, 2, 3, 4, 5];
// 스프레드(...) 문법을 사용해서 원본 배열 복사
const copiedArray = [...originalArray];
// 복사본에 reverse() 함수를 적용
copiedArray.reverse();
console.log(originalArray); // [1, 2, 3, 4, 5] (원본 배열은 변경되지 않음)
console.log(copiedArray); // [5, 4, 3, 2, 1] (역순으로 된 배열)
toReversed()
함수 사용하기
toReversed()
함수는 reverse()
함수와 모든 기능이 동일하지만 원본 배열을 변경하지 않습니다.
toReversed()
함수는 reverse()
함수의 단점을 보완하기 위해 ECMAScript 2023에서 처음으로 도입되었습니다. 이전에는 reverse()
함수만 사용하여 배열의 요소 순서를 역순으로 정렬할 수 있었습니다.
reverse()
함수는 원본 배열을 변경하기 때문에 원본 배열의 요소를 유지해야 하는 경우 사용할 수 없습니다. toReversed()
함수는 새 배열을 생성하여 요소를 변경하기 때문에 이러한 문제를 해결할 수 있습니다.
const originalArray = [1, 2, 3, 4, 5];
/* 배열의 요소 순서를 역순으로 정렬합니다. */
const reversedArray = originalArray.toReversed();
console.log(reversedArray); // [5, 4, 3, 2, 1] (역순으로 된 배열)
/* 원본 배열은 바뀌지 않습니다. */
console.log(originalArray); // [1, 2, 3, 4, 5]
주의하세요!
toReversed()
함수는 2023년도에 도입된 것으로 사용 시 브라우저 호환성을 확인해야 합니다.
메서드 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
toReversed()
|
110 | 110 | 115 | 16 |
다양한 예제
reverse()
함수는 여러 상황에서 다양하게 활용될 수 있습니다. 몇 가지 예제를 살펴보겠습니다.
순서 반전 후 반복
const numbers = [1, 2, 3, 4, 5];
// 배열 순서를 역순으로 변경하고 각 요소 출력
numbers.reverse().forEach(number => {
console.log(number);
});
// 출력: 5, 4, 3, 2, 1
코드 부연설명
forEach()
함수는 배열을 순회해서 각 요소를 콜백 함수로 처리하기 위한 함수입니다.
문자열을 뒤집기
const str = 'Hello, World!';
// 문자열을 배열로 변환하고 역순으로 변경한 후 다시 문자열로 조립
const reversedStr = str.split('').reverse().join('');
console.log(reversedStr);
// 출력: '!dlroW ,olleH'
코드 부연설명
문자열의 split()
함수는 문자열을 주어진 문자열 구분자나 정규식을 기준으로 나누어 배열로 변환합니다.
코드 부연설명
배열의 sort()
함수는 배열 요소를 원하는 정렬 순서로 변경(sort)하는 함수입니다.
코드 부연설명
배열의 join()
함수는 배열의 각 요소를 지정된 구분자로 연결(join)하여 하나의 문자열로 반환합니다.
역순으로 필터링
const numbers = [1, 2, 3, 4, 5];
// 배열을 역순으로 변경하고 특정 조건을 만족하는 요소만 필터링
const filteredNumbers = numbers.reverse().filter(number => number % 2 === 0);
console.log(filteredNumbers);
// 출력: [4, 2]
코드 부연설명
배열의 filter()
함수는 배열의 요소를 순회하면서 콜백 함수를 사용하여 원하는 조건에 따라 필터링하는 함수입니다. 필터링된 배열을 반환합니다.
브라우저 호환성
메서드 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
reverse()
|
1 | 12 | 1 | 1 |
명세서
명세서 사양 | |
---|---|
reverse()
|
ECMAScript Language Specification #sec-array.prototype.reverse |