我試圖找出爲什麼我的CoffeeScript代碼是不工作:比較數字,以數字作爲字符串
HTML:
<a data-id="5">Click me</a>
的CoffeeScript:
id = $('a').attr('data-id')
console.log id == 5
的問題是從attr('data-id')
返回的數字是一個字符串,並將其與ac雙數沒有通過比較。我應該做什麼不同,以便我可以輕鬆比較數字。
我試圖找出爲什麼我的CoffeeScript代碼是不工作:比較數字,以數字作爲字符串
HTML:
<a data-id="5">Click me</a>
的CoffeeScript:
id = $('a').attr('data-id')
console.log id == 5
的問題是從attr('data-id')
返回的數字是一個字符串,並將其與ac雙數沒有通過比較。我應該做什麼不同,以便我可以輕鬆比較數字。
您可以使用parseFloat或parseInt方法,也看看jQuery的data方法,試圖內容轉換data-
屬性的適當的數據類型
id = $('a').data('id')
console.log id == 5
兩種解決方案在一個答案。謝謝! – Andrew
如果你發現它足夠可讀,你總是可以用'+ x'來代替'parseInt'或'parseFloat'。我相信它和'Number(x)'基本相同。 – benekastah
出於好奇,我做了一些[測試](http://jsperf.com/9-vs-parseint-9):使用'+'比parseInt/parseFloat快得多。 – phenomnomnominal
相同的方式,在Javascript中做
id = '5'
console.log parseInt(id, 10) == 5 # parseInt() parses a string as an integer
console.log +id == 5 # + prefix is an "interpret as number" shorthand
console.log id == 5.toString() # Or convert the other number to a string
在JavaScript'=='會適用於這種情況,但咖啡escript將'=='轉換爲'==='。這會導致比較類型敏感。 – benekastah
很高興知道,謝謝! – Andrew
也許你在數字周圍有空格:「5」與「5」 –