在highcharts'tooltip.pointFormat中,我们看到了一个JavaScript封装变量的示例:我们可以传递类似'blah {series.name} blah {point.y}'
的内容,并在内部更改为'blah '+series.name+' blah '+point.y
。
我想在我正在构建的jQuery插件中创建类似的功能。有没有标准的方法来做到这一点?
我想过检查所有可能的封装变量,但这不是那么整洁,不是吗?
答案 0 :(得分:1)
我所知道的标准方法,但正则表达式+减少似乎是一个很好的组合:
function format(str, obj) {
return str.replace(/\{([\w.]+)\}/g, function(_,key) {
return key.split('.').reduce(function(a,b){ return a[b]; },obj);
});
}
var obj = { series: { name:'myseries', id:40 }, point: { x:1, y:2 } };
var str = 'blah {series.name} blah {point.y}';
console.log(format(str, obj)); //=> blah myseries blah 2