【问题标题】:generation google api pie char from complex array and object从复杂的数组和对象生成 google api pie char
【发布时间】:2015-11-22 22:25:11
【问题描述】:

我想用我的数据创建一个 google pie (https://jsfiddle.net/api/post/library/pure/) 聊天。[{"amt":"500","tag":"travel","date":"2015-11-23"},{"amt":"3750","tag":"rent","date":"2015-11-23"},{"amt":"500","tag":"food","date":"2015-11-23"},{"amt":"500","tag":"rent","date":"2015-11-23"},{"amt":"500","tag":"food","date":"2015-11-23"},{"amt":"3750","tag":"rent","date":"2015-11-23"},{"amt":"30","tag":"drinks","date":"2015-11-23"}]

我必须根据tag 对数据进行分组,以便我可以为特定tag 生成带有总量的饼图

我写的是这样的:

function genPiechart() { // generate piechart
  if (localStorage.expArr) {
    var expArr = JSON.parse(localStorage.getItem("expArr")),
      tagObj = {},
      i = expArr.length;
    while (i--) {
      var sHash = expArr[i].tag.toString();
      if (typeof(tagObj[sHash]) == "undefined")
        tagObj[sHash] = [];
      tagObj[sHash].push(expArr[i].amt);
    }

var amtArrArr = Object.keys(tagObj).map(function (key) {return tagObj[key]});


  }
}

但这=ngs 变得越来越复杂。

所以请帮帮我。

【问题讨论】:

    标签: javascript jquery html web-applications google-visualization


    【解决方案1】:

    试试这个:

    jsFiddle

    var myData = '[{"amt":"500","tag":"travel","date":"2015-11-23"},{"amt":"3750","tag":"rent","date":"2015-11-23"},{"amt":"500","tag":"food","date":"2015-11-23"},{"amt":"500","tag":"rent","date":"2015-11-23"},{"amt":"500","tag":"food","date":"2015-11-23"},{"amt":"3750","tag":"rent","date":"2015-11-23"},{"amt":"30","tag":"drinks","date":"2015-11-23"}]';
    
    var myObj = generateTmpObj(JSON.parse(myData));
    
    var tmpArray = [['Tag', 'Amount']];
        tmpArray = generate_array_for_DataTable(myObj);
    
    google.setOnLoadCallback(drawChart(tmpArray));
    
    function generateTmpObj(data) {
        var tmpObj = {};
        for(var i = 0; i < data.length; i++) {
           if (tmpObj[data[i].tag]) {
               tmpObj[data[i].tag] += parseInt(data[i].amt);
           } else {
               tmpObj[data[i].tag] = parseInt(data[i].amt);
           }
        }
        return tmpObj;
     }
    
     function generate_array_for_DataTable(data) {
        for (var prop in data) {
            tmpArray.push([prop, data[prop]]); 
        }
        return tmpArray;
     }
    
    function drawChart(data) {
        var data = google.visualization.arrayToDataTable(data);
    
        var options = {
          title: 'My Pie Chart'
        };
    
        var chart = new google.visualization.PieChart(document.getElementById('piechart'));
    
        chart.draw(data, options);
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 2018-05-23
      相关资源
      最近更新 更多