2015-07-11 41 views
0

我首先創建一個字符列表,並將它們中的兩個保存爲依賴於用戶輸入的字符串。我不確定問題出在哪裏,所以我複製了完整的代碼在這裏https://jsfiddle.net/mboguslaw97/6w6xj1f3/3/。左上角的卡片和下面的那兩個都是'L'。點擊後面的另一張卡來激活警報語句。Javascript未能正確比較兩個字符串

var letters = 'ABCDEFGHIJKL'.repeat(2).split(''); 
user_input = 11; 
cards_flipped.push(user_input); 
user_input = 23; 
cards_flipped.push(user_input); 
letter1 = letters[cards_flipped[0]]; 
letter2 = letters[cards_flipped[1]]; 

alert(letter1 == 'L'); 
alert(letter2 == 'L'); 
alert(letter1 == letter2) 
//Alerts true, true, false 

有人請向我解釋如何檢測字符串是否相等,以及爲什麼字符串不能用這種方式進行比較?

+0

什麼是'.repeat()'?預期的結果是什麼? – guest271314

+0

看起來對我很好http://jsfiddle.net/wqpLzffk/ –

+0

以下是完整的代碼:https://jsfiddle.net/mboguslaw97/6w6xj1f3/ – Mike

回答

1
console.log(typeof letter1, letter1 instanceof Array); 
object true 

letter1和letter2都是單值數組。它們之一「等於」字母「L」的唯一原因是由於類型轉換:與字符串文字比較時,正在對數組調用toString()方法。如果您比較letter1.toString() == letter2.toString()letter1[0] == letter2[0],它們將是平等的。我更新了fiddle

乾杯。

+0

非常感謝! – Mike

+1

@歡迎你不客氣:) –