2012-09-03 17 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.It返回的對象告訴我它仍然是一個數組後,應該「轉換」。我對此有點困惑。

我不是這樣做的一個項目,我很好奇,一直在挑選它一個小時。

回答

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方法。

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

您遇到不同的行爲的原因是因爲toString調用由逗號,而不是空間連接在一起,每一個元素。此代碼:

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 ith空間。

相關問題