2016-01-13 34 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); 
};