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

首頁 > 語言 > JavaScript > 正文

JS中實現簡單Formatter函數示例代碼

2024-05-06 16:07:47
字體:
來源:轉載
供稿:網友
JS沒有提供方便使用的Formatter函數,用字符拼接的方式看起來混亂難讀,下面是JS簡單實現版本(沒有嚴格測試)
 
 
 

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

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

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

(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("//{"+index+"//}",'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"));

關鍵的是這句:

args.reduce(execReplace,sourceStr);

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

previousValue:

在遍歷第一次進入該回調函數時,如果指定了initivalValue將直接使用initivalValue,如果沒有指定將使用數組的第一個元素
第二次及以后的遍歷該值是前一次遍歷返回的結果
最后一次遍歷返回的結果將作為reduce函數的返回值
currentValue: 遍歷到的當前item
index: 當前item在數組中的下標

array: 原始array

在execReplace中每一次執行時使用前一次替換后的結果作為原始替換字符串,使用當前item的index作為要被替換的內容,依次遍歷,最終完成替換內容。

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 清徐县| 仙桃市| 蒙山县| 汨罗市| 册亨县| 安阳县| 沁源县| 宣恩县| 刚察县| 绥化市| 凌海市| 湖南省| 麻城市| 余姚市| 丹巴县| 崇州市| 雷波县| 潢川县| 电白县| 晋中市| 忻城县| 兰西县| 巴东县| 特克斯县| 冷水江市| 章丘市| 长武县| 丹阳市| 美姑县| 九江县| 红河县| 阳原县| 龙山县| 定边县| 丹棱县| 铜鼓县| 平乡县| 吴川市| 洛隆县| 阿鲁科尔沁旗| 柳州市|