반응형
원래 배열을 변경하지 않고 Javascript로 배열을 뒤집습니다.
Array.prototype.reverse
(돌연변이로) 배열의 내용을 뒤집습니다.
원래 배열의 내용을 변경하지 않고 (돌연변이없이) 배열을 뒤집는 비슷한 전략이 있습니까?
당신은 사용할 수 있습니다 slice ()를 복사 한 다음 수 있도록 () 역 을
var newarray = array.slice().reverse();
var array = ['a', 'b', 'c', 'd', 'e'];
var newarray = array.slice().reverse();
console.log('a', array);
console.log('na', newarray);
ES6에서 :
const newArray = [...array].reverse()
또 다른 ES6 변형 :
.reduceRight()
실제로 뒤집지 않고 역 배열을 만드는 데 사용할 수도 있습니다 .
let A = ['a', 'b', 'c', 'd', 'e', 'f'];
let B = A.reduceRight((a, c) => (a.push(c), a), []);
console.log(B);
유용한 자료 :
이 재귀 솔루션을 사용해보십시오.
const reverse = ([head, ...tail]) =>
tail.length === 0
? [head] // Base case -- cannot reverse a single element.
: [...reverse(tail), head] // Recursive case
reverse([1]); // [1]
reverse([1,2,3]); // [3,2,1]
reverse('hello').join(''); // 'olleh' -- Strings too!
사용 .reduce()
및 확산 의 ES6 대안 .
const foo = [1, 2, 3, 4];
const bar = foo.reduce((acc, b) => ([b, ...acc]), []);
기본적으로 foo의 다음 요소로 새 배열을 만들고 b 후에 각 반복에 대해 누적 배열을 분산시키는 것입니다.
[]
[1] => [1]
[2, ...[1]] => [2, 1]
[3, ...[2, 1]] => [3, 2, 1]
[4, ...[3, 2, 1]] => [4, 3, 2, 1]
대안 적 .reduceRight()
으로, 상기 언급되었지만 .push()
돌연변이는 없다.
const baz = foo.reduceRight((acc, b) => ([...acc, b]), []);
수정하지 않고 배열을 뒤집는 방법에는 여러 가지가 있습니다. 그들 중 두
var array = [1,2,3,4,5,6,7,8,9,10];
// Using Splice
var reverseArray1 = array.splice().reverse(); // Fastest
// Using spread operator
var reverseArray2 = [...array].reverse();
// Using for loop
var reverseArray3 = [];
for(var i = array.length-1; i>=0; i--) {
reverseArray.push(array[i]);
}
성능 테스트 http://jsben.ch/guftu
es6 :
const reverseArr = [1,2,3,4].sort(()=>1)
반응형
'IT박스' 카테고리의 다른 글
문자열 변수 보간 자바 (0) | 2020.06.10 |
---|---|
Laravel 5-View 내 저장소에 업로드 된 이미지에 액세스하는 방법 (0) | 2020.06.10 |
n 일보다 오래된 디렉토리를 삭제하는 쉘 스크립트 (0) | 2020.06.10 |
jQuery는 선택된 옵션 값을 얻는다 (텍스트가 아니라 속성 'value') (0) | 2020.06.10 |
문자열을 Guid로 변환하는 방법 (0) | 2020.06.10 |