国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

詳解javascript中對(duì)數(shù)據(jù)格式化的思考

2019-11-19 17:48:31
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在實(shí)際應(yīng)用場(chǎng)景中,我們常常需將一些數(shù)據(jù)輸出成更加符合人類(lèi)習(xí)慣閱讀的格式。

保留小數(shù)點(diǎn)后面兩位

在一些要求精度沒(méi)有那么準(zhǔn)確的場(chǎng)景下,我們可以直接通過(guò)Number.prototype.toFixed()來(lái)實(shí)現(xiàn)保留小數(shù)點(diǎn)兩位這樣的需求。

var num = 123.45678console.log(num.toFixed(2)) //123.46var num2 = 12console.log(num2.toFixed(2)) //12.00

不過(guò)如果恰好,數(shù)字是一個(gè)整數(shù),那么就會(huì)輸出12.00這樣的格式,我們常常對(duì)于后面為00的整數(shù)要求直接輸出整數(shù)即可。因此不妨這樣寫(xiě)。

var num = 123.45678console.log(num.toFixed(2).replace('.00', '')) //123.46var num2 = 12console.log(num2.toFixed(2).replace('.00', '')) //12

toFixed()后面直接接著replace()將整數(shù)才會(huì)出現(xiàn)的.00字符串替換掉即可。

ps: Number.prototype.toFixed返回的是一個(gè)字符串

數(shù)字為[0-9]的情況下,前置補(bǔ)0

在輸出某些數(shù)字的時(shí)候下,如果是小于10的情況下需要在前面補(bǔ)0,尤其是在輸出日期時(shí)間的時(shí)候。

以前在用Date對(duì)象去獲取到相關(guān)的時(shí)間數(shù)據(jù)的時(shí)候去判斷是否小于10,如果是就補(bǔ)0。

var date = new Date()var min = date.getMinutes()min = min < 10 ? '0' + min : minconsole.log(min) //08

后來(lái)覺(jué)得實(shí)在不夠優(yōu)雅,而且代碼繁多,就想到用字符串替換的方式。

var date = new Date()var min = String(date.getMinutes()).replace(/^(/d{1})$/, '0$1')console.log(min) //08

這樣利用正則去匹配到單數(shù)字的情況下直接在前面加上0即可,一行代碼,更加優(yōu)雅。

再繼續(xù)衍生下去,我基本上都是在日期格式化的時(shí)候需要做數(shù)字替換,何不直接整個(gè)字符串替換即可?比如將2017-1-8 12:8替換成2017-01-08 12:08

var date = '2017-1-8 12:8'.replace(//b/d{1}/b/g, '0$&')console.log(date)

通過(guò)正則去做整個(gè)字符串替換,不再針對(duì)性的針對(duì)某些部分做處理了。 最后給出完整的格式化日期函數(shù)示例。

function formatDate (source, format) { var date = new Date(); format = format || 'yyyy-MM-dd hh:mm'; if (typeof source == 'string') format = source; if (typeof source == 'number') date = new Date(source);  let year = date.getFullYear(); let month = date.getMonth() + 1; let day = date.getDate(); let hour = date.getHours(); let miniute = date.getMinutes(); let second = date.getSeconds(); return format.replace('yyyy', year)  .replace('MM', month)  .replace('dd', day)  .replace('hh', hour)  .replace('mm', miniute)  .replace('ss', second)  .replace(//b/d{1}/b/g, '0$&'); return date;}

上面列舉的所有代碼,都沒(méi)有考察對(duì)比過(guò)執(zhí)行效率,因?yàn)樵谶@些應(yīng)用場(chǎng)景下,效率是其次問(wèn)題。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 天门市| 五台县| 雅安市| 奉贤区| 铁岭市| 南乐县| 兰州市| 巫溪县| 溧水县| 邹城市| 云林县| 巴彦淖尔市| 珠海市| 肇东市| 怀仁县| 万安县| 呼玛县| 惠来县| 怀远县| 潮安县| 抚顺市| 余庆县| 偏关县| 吉林市| 从江县| 盱眙县| 邵武市| 大足县| 田林县| 临颍县| 安溪县| 五家渠市| 西吉县| 香格里拉县| 丽江市| 维西| 高淳县| 祁门县| 六安市| 郑州市| 蕲春县|