2013-04-09 4 views
0

Found эта функция здесьJavascript расширить экспоненциальный

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) : ""); 
}); 
}; 

Я сортирую получить часть заменить, но я потерял, когда я вижу функцию (х, s, п, е, с) часть. Что мне не хватает?

Может кто-нибудь помочь мне разбить это на более понятные компоненты?

+0

[Документация MDN для «заменить»] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter) – Pointy

+0

Это просто имена аргументов, произвольные и запутанные/minified –

ответ

1

См this page

В основном, x это соответствует подстроки. s соответствует части, которая была сопоставлена ​​первой парой круглых скобок (([+-])), n соответствует части, сопоставляемой вторыми круглыми скобками ((\d+)) и т. Д.

Соответствующая строка заменяется значением, возвращаемым этой функцией.

+0

Последняя строка сделала это – sloven

1

Вы можете передать функцию в качестве второго параметра вызова replace().

Список параметров (from MDN):

  • спички подстрока - в вашем случае x
  • п скобки, submatch строки - в вашем случае 2: ​​s и n
  • смещения совпадающей подстроки - в вашем случае f
  • общая строка - в вашем случае c