如何循环高图主题

时间:2014-06-12 09:20:07

标签: javascript jquery highcharts highstock

我想循环一个高图的主题:

Highcharts.theme = {
    yAxis: {
        opposite: true,
        lineWidth: 0, // Linie ganz rechts      
    },
    navigation: {
        buttonOptions: {
            align: 'left'
        }
    },   
    rangeSelector: {
        selected: 1
    }
};

结果,我需要成对的键/值:

  • yAxis.opposite / true
  • yAxis.lineWidth / 0
  • navigation.buttonOptions.align / left
  • rangeSelector.selected / 1

任何人都可以帮助以最好的方式做到这一点吗?

1 个答案:

答案 0 :(得分:1)

您可以使用for循环遍历javascript对象。像这样的东西会遍历主题(深达三层)并将键/值放入数组中:

var myVals = [];
for (var key in Highcharts.theme) {   
  if (Highcharts.theme.hasOwnProperty(key)) {
     var obj = Highcharts.theme[key];
     for (var prop in obj) {
        if (obj.hasOwnProperty(prop)) {
          if (typeof obj[prop] === 'object') {
             for (var prop2 in obj[prop]) {
               var myKey = key + "." + prop + "." + prop2;
               myVals[myKey] = obj[prop][prop2];
             }
          } else {
            var myKey = key + "." + prop;
            myVals[myKey] = obj[prop];
          }
        }
     }
  }
}
console.log(myVals);

如果您有更深层次的嵌套值,那么最好使用递归函数重写它。