2017-09-07 9 views
0

역 기능을 사용하는 데 문제가 없었기 때문에 브라우저 콘솔이 도청되었는지 또는 진행 중인지 알 수 없습니다. str.reverse 함수가 전역 범위의 모든 배열을 역전합니다.

나는 내 크롬 콘솔에 다음 던져

,

var a = ['one', 'two', 'three']; 
var reversed = a.reverse(); 

console.log(a);  // ['one', 'two', 'three'] 
console.log(reversed); // ['three', 'two', 'one'] 

나는 장소에 enter image description here

답변

0

Array#reverse 작품을 얻고 새로운 배열을 만들지 않습니다. 라인

var reversed = a.reverse(); 

a 반전과 같은 배열을 참조 할 reversed을 설정한다. 당신은 그들이 동일한 배열을 참조하기 때문에 reversed에 항목을 추가하는 것은 또한 a에 영향을 미치는 것을 알 수 있습니다이 예에서

:

var a = ['one', 'two', 'three']; 
 
var reversed = a.reverse(); 
 

 
reversed.push(1000); // add something to reversed 
 

 
console.log(a);  // ['three', 'two', 'one', 1000] 
 
console.log(reversed); // ['three', 'two', 'one', 1000]

새로운 배열이 원래에 Array#slice을 사용하여 만들려면을, 그런 다음 배열을 반대로합니다.

var a = ['one', 'two', 'three']; 
 
var reversed = a.slice().reverse(); 
 

 
console.log(a);  // ['one', 'two', 'three'] 
 
console.log(reversed); // ['three', 'two', 'one']

+0

하나의 변수 설정에 대한 갈 것이라고 어떻게 원본을 유지하면서 반전 된 문자열을 비교할 수 있으므로 원하는 출력을 주석으로 기록 할 수 있습니까? –

+0

@BrodyMacfarlane - 슬라이스 한 다음 뒤집습니다. 예제를 추가했습니다. –

+0

안녕하세요. 내 부분에 절름발이 오류가 발생했습니다. 몇 가지 대답을 수락합니다! –

0

역순 함수는 현재 배열을 변경합니다. reverseda.reverse()으로 선언하면 배열 a도 변경됩니다. 따라서, 당신은 console.log(a)을 위해 ['three', 'two', 'one']를 인쇄하고 console.log(reversed)

싶은 것은의 복제하는 것입니다 :

var a = ['one', 'two', 'three']; var reversed = a.slice().reverse();

console.log(a); // ['one', 'two', 'three'] console.log(reversed); // ['three', 'two', 'one']