Javascript 在动态图形的Y轴标签中添加逗号分隔符

Javascript 在动态图形的Y轴标签中添加逗号分隔符,javascript,r,dygraphs,r-dygraphs,Javascript,R,Dygraphs,R Dygraphs,我使用dygraphs包 library(dygraphs) library(htmlwidgets) library(zoo) valueFormatter = "function formatValue(v) { var suffixes = ['', 'K', 'M', 'G', 'T']; if (v <

我使用
dygraphs包

library(dygraphs)
library(htmlwidgets)
library(zoo)

valueFormatter = "function formatValue(v) {
                                            var suffixes = ['', 'K', 'M', 'G', 'T'];
                                            if (v < 1000) return v;
                                            var magnitude = Math.ceil(String(Math.floor(v)).length / 4-1);
                                            if (magnitude > suffixes.length - 1)
                                            magnitude = suffixes.length - 1;
                                            return String(Math.round(v / Math.pow(10, magnitude * 3), 2)) +suffixes[magnitude]
                                        }" 
Data = zoo(matrix(c(10000, 1000000, 100000000, 50000), nc = 1), as.Date(c('2015-01-05', '2016-01-05', '2017-01-05', '2018-01-05'))); colnames(Data) = 'x'
dygraph(Data, main = "") %>% dySeries(c("x")) %>% 
                            dyAxis("y", axisLabelFormatter = JS(valueFormatter), 
                                        valueFormatter     = JS(valueFormatter),
                                        rangePad = 20)
库(动态图)
库(htmlwidgets)
图书馆(动物园)
valueFormatter=“函数formatValue(v){
变量后缀=['','K','M','G','T'];
如果(v<1000)返回v;
变量大小=数学单元(字符串(数学层(v))。长度/4-1);
if(幅值>后缀.length-1)
震级=后缀。长度-1;
返回字符串(Math.round(v/Math.pow(10,震级*3),2))+后缀[震级]
}" 
数据=动物园(矩阵(c(10000,1000000,100000000),nc=1),截止日期(c('2015-01-05','2016-01-05','2017-01-05','2018-01-05');colnames(数据)='x'
动态图(数据,main=“”)%%>%dySeries(c(“x”))%%>%
dyAxis(“y”,axisLabelFormatter=JS(valueFormatter),
valueFormatter=JS(valueFormatter),
rangePad=20)

但是,在Y轴的标签中,我希望为刻度值使用1000分隔符,例如,我希望使用
30000K
而不是
30000K
。有什么办法可以做到这一点。

将您的数字
30000K
转换为千位分隔值
30000K

正则表达式在每个第三位数字后放置逗号

var regex = /\B(?=(\d{3})+(?!\d))/g;
var number = "200";
var thousandSeprator = "20000";
console.log(number.replace(regex,',')); // 200
console.log(thousandSeprator.replace(regex,',')); // 20,000
更新了
valueFormatter
函数

valueFormatter = "function formatValue(v) {
                                            var suffixes = ['', 'K', 'M', 'G', 'T'];
                                            var regex = /\B(?=(\d{3})+(?!\d))/g; 
                                            if (v < 1000) return v.toString().replace(regex,',');
                                            var magnitude = Math.ceil(String(Math.floor(v)).length / 4-1);
                                            if (magnitude > suffixes.length - 1)
                                            magnitude = suffixes.length - 1;        
                                            return v.toString().replace(regex,',') +suffixes[magnitude]
                                        }"
valueFormatter=“函数formatValue(v){
变量后缀=['','K','M','G','T'];
var regex=/\B(?=(\d{3})+(?!\d))/g;
如果(v<1000)返回v.toString().replace(regex,,);
变量大小=数学单元(字符串(数学层(v))。长度/4-1);
if(幅值>后缀.length-1)
震级=后缀。长度-1;
return v.toString().replace(regex,,')+后缀[大小]
}"

谢谢。但当我在R控制台中放入短语“/\B(?=(\d{3})+(?!\d))/g”时,我得到错误:“\B”是以“/\B”开头的字符串中无法识别的转义符。我正在使用iOS@Bogaso双反斜杠的工作原理与
jay.sf
中提到的一样。参考链接-I稍微修改为“/\\B(?=(\\d{3})+(?!\\d))/g“。但是,使用此valueFormatter,我丢失了千(K)个后缀来记录此值
后缀[magnity]
,以便更好地了解出了什么问题