时间:2021-05-26
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函数基本一样,只是它的遍历顺序是由右向左
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
自己写了一个很简单的jquery插件,在页面中调用其中的函数就可实现.插件源代码(listtolist.js):复制代码代码如下:/**fromid:源list
JS的回调函数很简单,看代码:在a.js中varmyback=null;functionload(obj){myback=obj;}functionsave()
vue实现codemirror代码编辑器中的SQL代码格式化功能1、首先使用npm安装sql-formatter插件npminstall--savesql-fo
其实在js中实现数组排序,采用数组中sort方法实现还是比较简单的:一、排序简单实现数组排序复制代码代码如下:vararr=[];for(vari=0;ib?1
这篇文章主要介绍了JS简单实现对dom操作封装,下面就直接上代码:js测试//duquery(function(w){//定义立即执行函数,传入全局对象wind