如果我想轉換數組裡面的字符串為數字的話,很自然就會想到 map
和 parseInt
這兩個方法。但是用起來的時候卻不是我想要的結果。。。
|
|
原因
如果我們細看 map 的參數,就會發現它的 callback 會有三個 arguments:currentValue
, index
和 array
。
對於 parseInt
來說, 它會接收currentValue
和 index
,並用 index 作為 index 進制。。。12345parseInt('1', 0); // OK => 1parseInt('2', 1); // 不合法的進制。。。parseInt('3', 2); // NaN, 二進制沒有 3parseInt('4', 3); // NaN, 三進制沒有 4parseInt('5', 4); // NaN, 四進制沒有 5
解決方法
用
.map(parseFloat)
,因為它只接收一個參數。1var c = a.map(parseFloat);用
.map(Number)
1var d = a.map(Number);用
.map(num => parseInt(num))
1var e = a.map(num => parseInt(num));