javascript扩展指数

时间:2013-04-09 14:17:46

标签: javascript math exponential

在这里找到这个功能

http://jsfromhell.com/string/expand-exponential

String.prototype.expandExponential = function(){
return this.replace(/^([+-])?(\d+).?(\d*)[eE]([-+]?\d+)$/, function(x, s, n, f, c){
    var l = +c < 0, i = n.length + +c, x = (l ? n : f).length,
    c = ((c = Math.abs(c)) >= x ? c - x + l : 0),
    z = (new Array(c + 1)).join("0"), r = n + f;
    return (s || "") + (l ? r = z + r : r += z).substr(0, i += l ? z.length : 0) + (i < r.length ? "." + r.substr(i) : "");
});
};

我得到了替换部分,但是当我看到函数(x,s,n,f,c)部分时,我迷失了。我错过了什么?

有人可以帮助我将其分解为更容易理解的组件吗?

2 个答案:

答案 0 :(得分:1)

请参阅this page

基本上,x是匹配的子字符串。 s对应于第一对括号(([+-]))匹配的部分,n对应于第二个括号((\d+))匹配的部分,因此上。

匹配的字符串将替换为此函数返回的值。

答案 1 :(得分:1)

您可以将函数作为replace()调用的第二个参数传递。

参数列表(from MDN):

  • 匹配子字符串 - 在您的情况下为x
  • n个带括号的子匹配字符串 - 在您的情况下为2:sn
  • 匹配子字符串的偏移量 - 在您的情况下为f
  • 总字符串 - 在您的情况下为c