JavaScript Array.map(parseInt) 錯誤解決方案

作者: Calpa Liu
字數:743
出版日期:May 31, 2017
更新日期:December 7, 2023
分類: #前端開發
#JavaScript

如果我想轉換數組裡面的字符串為數字的話,很自然就會想到 `map` 和 `parseInt` 這兩個方法。但是用起來的時候卻不是我想要的結果。

如果我想轉換數組裡面的字符串為數字的話,很自然就會想到 mapparseInt 這兩個方法。但是用起來的時候卻不是我想要的結果。。。

var a = ["1", "2", "3", "4", "5"];

var b = a.map(parseInt);

console.log(b); // [1, NaN, NaN, NaN, NaN]

原因

如果我們細看 map 的參數,就會發現它的 callback 會有三個 arguments:currentValue, indexarray

對於 parseInt 來說, 它會接收currentValueindex,並用 index 作為 index 進制。。。

parseInt('1', 0); // OK => 1
parseInt('2', 1); // 不合法的進制。。。
parseInt('3', 2); // NaN, 二進制沒有 3
parseInt('4', 3); // NaN, 三進制沒有 4
parseInt('5', 4); // NaN, 四進制沒有 5

解決方法

  1. .map(parseFloat),因為它只接收一個參數。
var c = a.map(parseFloat);
  1. .map(Number)
var d = a.map(Number);
  1. .map(num => parseInt(num))
var e = a.map(num => parseInt(num));
感謝您閱讀我的文章。歡迎隨時分享你的想法。
關於 Calpa

Calpa 擅長使用 TypeScript、React.js 和 Vue.js 開發Responsive Web Design網站。

此外,Calpa 積極參與香港和台灣的開源社區,曾在2019年的香港開源大會上擔任講者,提供工作經驗和見解。此外,他也在 GitHub 上公開分享個人博客程式碼,已獲得超過300顆星星和60個分支的支持。

更多前端開發技術文章:傳送門