2012-09-03 1 views
0

아래 코드를 작성하면 모든 결과가 예상대로 출력되지 않습니다.Javascript 배열을 문자열로 변환하여 역순으로 출력합니다.

var sequence = "kick snare hat openHat"; 
var sequenceBackwards = sequence.split('').reverse().join(''); 
document.write(sequenceBackwards); 

그러나 배열이있는 경우 문자열로 변환 한 다음 작동하지 않는 동일한 절차를 수행하십시오.

var sequence = ["kick","snare", "hat","openHat"]; 
sequence.toString(); 
var sequenceBackwards = sequence.split('').reverse().join(''); 
document.write(sequenceBackwards); 

이것이 작동하지 않는 이유와 작동하는 대체 예제를 알고 싶습니다.

sequenceBackwards에 대해 "typeof"를 수행하면 string을 반환하지 않습니다.이 객체는 "변환"이 된 후에도 여전히 배열임을 나타냅니다. 나는 이것에 대해 약간 혼란 스럽다.

나는 프로젝트를 위해 이것을하고 있지 않다. 나는 궁금해서 한 시간 동안 집어 들고있다.

답변

2

이 줄은하지 않습니다 변수 sequence 변경, 그냥 returns 문자열 :

sequence.toString();

["kick", "snare", "hat", "openHat"].toString()"kick,snare,hat,openHat"을 제공합니다. 그래서 당신이 찾고있는 것이 아닙니다.

사용

var sequence = ["kick", "snare", "hat", "openHat"]; 
var sequenceBackwards = sequence.join(' ').split('').reverse().join(''); 
document.write(sequenceBackwards); 
0

배열은 .reverse입니다. toString 호출이 쉼표가 아닌 공백으로 함께 각 요소를 결합하기 때문에

var sequence = ["kick","snare", "hat","openHat"]; 
sequence.reverse(); 
0

서로 다른 문제가 발생하고있는 이유입니다. 이 코드 :

var sequence = ["kick","snare", "hat","openHat"]; 
sequence.toString(); 

다음 반환

openHat

킥, 스네어, 모자, 대신 이것을 사용할 수 있습니다 :

sequence.join(' '); 
0

sequence 변수에 아무것도하지 : 당신은 그것을 다시 할당 할 필요가

var sequence = ["kick","snare", "hat","openHat"]; 
sequence.toString(); 

:

sequence = sequence.toString(); 

그러나 Array.toString 반환 쉼표로 구분 된 값을하지만, 당신이 할 수있는 sequence.join(' ')을 사용하여 값 w 연결 i 번째 공간.