2016-01-13 32 views
0

我在页面上有多个图表,并且需要访问其中一个图表的数据。按标题查找图表(Highcharts)

按标题查找图表的最简单方法是什么?是否有任何内置在Highcharts佣工这一点,还是我写我自己查找的东西,如:

function getChartByTitle(titleString) { 
    var allCharts = Highcharts.charts; 

    // 1. for each chart, get options 
    // 2. look up the "title" attribute in the options 
    // 3. if matches `titleString`, return current chart 
} 

回答

2

使用Array.prototype.find()

function getChartByTitle(titleString) { 
    var allCharts = Highcharts.charts; 
    return allCharts.find(function(chart) { 
     return chart.options && chart.options.title === titleString; 
    }); 
} 

注:Array.prototype.find( )在所有浏览器中都不受支持(如果使用它检查兼容性)。

目前支持的解决方案将使用Array.prototype.filter()

function getChartByTitle(titleString) { 
    var allCharts = Highcharts.charts; 
    var result = allCharts.filter(function(chart) { 
     return chart.options && chart.options.title === titleString; 
    }); 
    return result.length > 0 ? result[0] : undefined; 
} 
+0

灿”不支持ES2015(需要IE10支持),但我确实有lodash可用,所以可以使用它作为替代。 – mikhail

+0

@mikhail然后使用第二个解决方案 – madox2

+0

我发布的答案为我工作,但你的答案更具普遍性,所以我选择了这个。 – mikhail

2

因为我有lodash可用,如果没有人提出内置了Highcharts什么,我最终会使用这样的:

function getChartByTitle(titleString) { 
    var allCharts = Highcharts.charts, 
     searchTarget = {options: {title: {text: titleString}}}; 

    return _.find(allCharts, searchTarget); 
};