2017-01-30 73 views
-1

我想扭轉一個字符串,它確實有效,但是當我將userInput [i]存儲到結果變量中時,我得到了字符串末尾的NaN。反轉字符串時,我在最後得到一個NaN。 Javascript

//variables 
var userInput, result; 

userInput = prompt("Enter a string that you want reversed: "); 

for (var i = userInput.length; i >= 0; i--) { 
    result += userInput[i]; 
} 

console.log("Your string: \n" + result); 
+0

指數從0開始 –

+0

'未定義+ undefined'是'NaN' – Oriol

回答

1

試試這個

var userInput, result = ""; // initialize this first 
 
    
 
    userInput = prompt("Enter a string that you want reversed: "); 
 
    
 
    for (var i = userInput.length - 1; i >= 0; i--) { 
 
     result += userInput[i]; 
 
    } 
 
    console.log("Your string: \n" + result);

+0

太好了!謝謝! – Alex

+0

@Ameya初始化結果變量'var result =「」',除非它首先追加'undefined'。 – Shubham

+0

@Pavlo它按預期工作 –

1

這個問題由2個較小的問題。

第一個問題:

「結果」沒有初始化,它包含「不確定」,這跟弦後來食堂。將它初始化爲空字符串,以便JavaScript知道它應該將其作爲字符串處理,因爲「+」 - 運算符被重載以處理添加和字符串連接。

問題二

的userInput字符串的索引從0達到 - (userInput.length - 1),所以相應地改變環路。

var userInput, result = ""; // initialize this first 

userInput = prompt("Enter a string that you want reversed: "); 

// initialize i with (userInput.length - 1) since the index ends there 
for (var i = userInput.length - 1; i >= 0; i--) { 
    result += userInput[i]; 
} 
console.log("Your string: \n" + result); 
+0

很好的解釋。代碼示例會使它更好。 – Pavlo

1

Stringlength屬性返回字母計數而一個Array開始的從0索引所以,你的問題可以通過減少字符串的長度由1即userInput.length - 1解決。

var userInput, result=""; 

userInput = prompt("Enter a string that you want reversed: "); 

for (var i = userInput.length - 1; i >= 0; i--) { 
    result += userInput[i]; 
} 
console.log("Your string: \n" + result); 
3

你開始從userInput.length循環這是一個錯誤的指數,因爲userInput[userInput.length]undefined。你需要做的是從userInput.length - 1這樣開始(並開始積累的結果之前,不要忘了初始化result空字符串):

result = ""; 
for (var i = userInput.length - 1; i >= 0; i--) { 
    result += userInput[i]; 
} 

注:當去了一個數組,我們不當我們訪問userInput.length索引(userInput[userInput.length])時,實際上達不到該點,因爲通常情況下該循環的條件爲i < userInput.length,只要i等於userInput.length就會失敗。向下數組時,應該記錄允許的索引。

注意2:使用string.charAt(index)而不是string[index]更安全。瞭解爲什麼here

+0

這是迄今爲止唯一正確的答案,但是如果解釋你更改了什麼以及爲什麼 – georg

+0

1)將結果變量聲明爲默認字符串 2)for for循環「userInput.length - 1」Coz將更好。數組第一個索引是0. –

+0

爲什麼你聲明'var result'兩次? – Pavlo

2

你是最好,通過使用類似下面扭轉的JavaScript字符串:。

'YOURSTRING'.split('').reverse().join(''); 

'abcdef'.split('')反向()加入( '')會給你fedcba

+1

最好的方法來做到這一點(Y)。 – Shubham

0

得到你的字符串。 Split它進入數組。reverse你的數組和join。最後你會得到反轉的字符串。

var userInput, result = ""; // initialize this first 
 
    
 
    userInput = prompt("Enter a string that you want reversed: "); 
 
    
 
    result = userInput.split("").reverse().join(""); 
 
    console.log("Reversed string: \n" + result);

相關問題