JS中实现简单Formatter函数示例代码

 更新时间:2014年08月19日 17:22:52   投稿:whsnow  
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函数基本一样,只是它的遍历顺序是由右向左

相关文章

  • 关于Layui Table隐藏列问题

    关于Layui Table隐藏列问题

    今天小编就为大家分享一篇关于Layui Table隐藏列问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JavaScript如何从listbox里同时删除多个项目

    JavaScript如何从listbox里同时删除多个项目

    要从列表框同时删除多个项目只能从下向上删除,这样就不会出现索引号乱变的问题了,下面有个不错的示例,大家可以感受下
    2013-10-10
  • 理解Javascript闭包

    理解Javascript闭包

    闭包是ECMAScript一个很重要的特征,但是却很难用合适的定义来描述它。虽然闭包很难清晰地描述,但是,却很容易创建,或者说,不小心创建。然而,闭包的存在其实是有一定的潜在问题的。为了避免“不小心”地创建闭包,以及更好地利用闭包的优点,有必要理解闭包的机制
    2013-11-11
  • javascript绘制漂亮的心型线效果完整实例

    javascript绘制漂亮的心型线效果完整实例

    这篇文章主要介绍了javascript绘制漂亮的心型线效果实现方法,结合完整实例形式分析了JavaScript图形绘制的具体步骤与相关实现技巧,需要的朋友可以参考下
    2016-02-02
  • 红米手机抢购的js代码

    红米手机抢购的js代码

    这篇文章主要介绍了红米手机抢购时返回的js代码,制作红米抢购软件时可以用到,,需要的朋友可以参考下
    2014-03-03
  • javascript数组去重的方法汇总

    javascript数组去重的方法汇总

    数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑下性能。以下方法,网上基本都有,这里只是简单地总结一下分享给大家。
    2015-04-04
  • uniapp打包成微信小程序的详细过程

    uniapp打包成微信小程序的详细过程

    微信小程序的出现给我们提供了一种使用应用的新方式和体验,下面这篇文章主要给大家介绍了关于uniapp打包成微信小程序的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 大白话讲解JavaScript的Promise

    大白话讲解JavaScript的Promise

    这篇文章主要介绍了大白话讲解JavaScript的Promise,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • js中split()方法得到的数组长度问题

    js中split()方法得到的数组长度问题

    split() 方法用于把一个字符串分割成字符串数组。这篇文章给大家介绍js中split()方法得到的数组长度问题,感兴趣的朋友一起看看吧
    2018-07-07
  • js分解url参数(面向对象-极简主义法应用)

    js分解url参数(面向对象-极简主义法应用)

    刚看到笑看风云写的JavaScript面向对象(极简主义法)和一个分解url参数面试题,我作了一下修改,记录下来
    2012-08-08

最新评论