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

首頁 > 編程 > JavaScript > 正文

JS中實現(xiàn)簡單Formatter函數(shù)示例代碼

2019-11-20 14:15:23
字體:
供稿:網(wǎng)友

JS原生并沒有提供方便使用的Formatter函數(shù),用字符拼接的方式看起來混亂難讀,而且使用起來很不方便。個人感覺C#里提供的語法比較好用,如:

String.Format(“Welcome to learn '{0}','{0}' is awesome,you will {1} it!","Javascript","love");

這種有順序的替換方式,比較清晰,而且在要替換同一內(nèi)容時候可以省去傳遞重復(fù)參數(shù)的情況,下面是JS簡單實現(xiàn)版本(沒有嚴(yán)格測試):

(function(exports) {exports.format = function(){var args = Array.prototype.slice.call(arguments),sourceStr = args.shift();function execReplace(text,replacement,index){return text.replace(new RegExp("http://{"+index+"http://}",'g'),replacement);}return args.reduce(execReplace,sourceStr);}})(window.utils = window.utils || {});console.log(utils.format("Welcome to learn '{0}','{0}' is awesome,you will {1} it!","Javascript","love"));

關(guān)鍵的是這句:

args.reduce(execReplace,sourceStr);

這里使用了Array的reduce函數(shù),reduce和reduceRight是ES5新增加的函數(shù),該函數(shù)的參數(shù)是reduce(callback,initialValue),callback接收4個參數(shù)分別是:

previousValue:

在遍歷第一次進(jìn)入該回調(diào)函數(shù)時,如果指定了initivalValue將直接使用initivalValue,如果沒有指定將使用數(shù)組的第一個元素
第二次及以后的遍歷該值是前一次遍歷返回的結(jié)果
最后一次遍歷返回的結(jié)果將作為reduce函數(shù)的返回值
currentValue: 遍歷到的當(dāng)前item
index: 當(dāng)前item在數(shù)組中的下標(biāo)

array: 原始array

在execReplace中每一次執(zhí)行時使用前一次替換后的結(jié)果作為原始替換字符串,使用當(dāng)前item的index作為要被替換的內(nèi)容,依次遍歷,最終完成替換內(nèi)容。

注:reduceRight和reduce函數(shù)基本一樣,只是它的遍歷順序是由右向左

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 崇明县| 阿拉尔市| 通化县| 子洲县| 安康市| 子洲县| 德令哈市| 景洪市| 鄂伦春自治旗| 县级市| 收藏| 洪洞县| 论坛| 临湘市| 济阳县| 嘉鱼县| 江山市| 河曲县| 清涧县| 延边| 原阳县| 宜兰县| 汉寿县| 桐梓县| 九龙城区| 恩施市| 彰武县| 无为县| 德安县| 安福县| 深州市| 高台县| 安西县| 宁国市| 康马县| 辽中县| 突泉县| 栖霞市| 云和县| 花莲市| 晴隆县|