2011-10-29 27 views
0
string1 = prompt("String 1?"); 
string2 = prompt("String 2?"); 

if (string1.length == string2.length) 
    alert (string1 + " and " + string2 + " : are identical in size.") 
     else 
    alert (string1 + " and " + string2 + " : not identical in size.") 

for(i=0; i<string1.length; i++) 
    { 
     for(j=0; j<string2.length; j++) 
     { 
     if (string1.charAt[i] == string2.charAt[i]) 
      alert (string1.charAt[i] + " and " + string2.charAt[j] + " : are identical values.") 
       else 
      alert (string1.charAt[i] + " and " + string2.charAt[j] + " : are non-identical values.") 
     } 
    }; 

代碼的第二部分一直返回「undefined」和「undefined」。我試圖比較兩個字符串以查看它們是否具有相同的值。將不勝感激任何幫助!檢查兩個字符串的大小是否相同並保持相同的值

+0

是您的意向「比較兩個字符串,看看他們是否持有相同的價值觀」作爲您的問題描述,在這種情況下,爲什麼不直接說'如果(字符串1 === string2')像InviS的答案,或者實際給出了很多警告消息,指出哪些字符是相同的,哪些不同於你的代碼? – nnnnnn

+1

P.S.你可能想停下來,然後繼續前面的工作(http://stackoverflow.com/q/7942274/615754)... – nnnnnn

+0

感謝提醒我 - 我傾向於有時候跳過自己! – methuselah

回答

2

當你比較字符您使用了錯誤的指標。這:

if (string1.charAt[i] == string2.charAt[i]) 

應該是:

if (string1.charAt(i) == string2.charAt(j)) 

除了使用括號,如羅布W¯¯指出,你應該使用變量j訪問string2字符。

我不知道爲什麼你的每一個字符用一個字符串的每一個字符在另一個字符串比較,但...如果你真的想每個字符對應的字符比較另一個字符串,那麼你應該沒有嵌套循環,而是一個循環。

+0

謝謝!我從來沒有見過! – methuselah

+0

+1指出嵌套循環沒有任何意義。 – nnnnnn

2

使用charAt(i)而不是charAt[i](圓括號而不是方括號)。
charAt是一個String方法,而不是字符串的屬性。

等效方法:

string1[i] 
string1.charAt(i) 
string1.substr(i, 1) 
string.substring(i, i+1) 
2

Wtf?

string1 === string2 

爲什麼不呢?

+0

你是什麼意思? – methuselah

+0

@jeansymolanza:這不是你如何比較JavaScript中的字符串。它不是C.即使是,'strcmp'也可以。 – Hello71

+0

爲什麼你比較字符串的方式如此困難?如果你需要比較數組,請使用underscore.js :)有用的庫! – ValeriiVasin

相關問題