簡體   English   中英

返回數組中可以成功轉換為數字的字符串數量的計數

[英]Return a count of the number of strings in the array that can be successfully converted into a number

所以我正在編寫一個小函數,它將返回數組中可以成功轉換為數字的字符串數量的計數。

換句話說,字符串“1”可以成功轉換為數字1,但字符串“hello”不能轉換為數字。

這是我到目前為止所擁有的:

 function countNumbers(arr) { var conversion = Number(arr); return conversion; } console.log( countNumbers(['a','b','3','awesome','4']), // 2 countNumbers(['32', '55', 'awesome', 'test', '100']), // 3 countNumbers([]), // 0 countNumbers(['4','1','0','NaN']), // 3 countNumbers(['7', '12', 'a', '', '6', '8', ' ']) // 4 );

Number()函數是否最適合此任務? 還是parseInt() 目前它只返回: NaN NaN 0 NaN NaN ,當它應該返回2 3 0 3 4

像這樣使用Number()isNaN

 function countNumbers(arr) { arr = arr.filter(x => x.trim().length !== 0).map(x => x.trim()) const total = arr.reduce((acc, x) => !isNaN(Number(x)) ? acc + 1 : acc, 0) return total; } console.log( countNumbers(['a','b','3','123banana','4']), // 2 countNumbers(['32', '55', 'awesome', 'test', '100']), // 3 countNumbers([]), // 0 countNumbers(['4','1','0','NaN']), // 3 countNumbers(['7', '12', 'a', '', '6', '8', ' ']) // 4 );

您當前的實現並未嘗試實際計算任何內容,它只是希望Number()能夠執行您想要的確切行為(它沒有)。

像這樣的事情會很好:

 function countNumbers(arr) { return arr.filter(n => !isNaN(n) && !isNaN(parseInt(n))).length; } console.log( countNumbers(['a','b','3','awesome','4']), // 2 countNumbers(['32', '55', 'awesome', 'test', '100']), // 3 countNumbers([]), // 0 countNumbers(['4','1','0','NaN']), // 3 countNumbers(['7', '12', 'a', '', '6', '8', ' ']), // 4 countNumbers(['123banana','3','',' ',' ','6','3numbers','5']), //3 );

感謝@PrashantSharma 提供了更簡潔的實現

我使用!isNaN(n) && !isNaN(parseInt(n))因為第一個檢查字符串是否只是一個數字(例如 parseInt 認為12px是一個數字),第二個丟棄空格( ''不是一個數字,但它通過了第一次檢查,因為... javascript)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM