获取json数据中的值的计数,并根据c3表的值创建变量

时间:2017-05-17 14:31:10

标签: angularjs count c3.js

我正在尝试创建动态圆环图,因为我不知道将会有多少变量,但数据集将在10,000的变量中,包含1到20个变量。

我已将数据存入数组,如下所示。

如何为数组中的每个唯一元素及其计数创建var,即var 1 = [sys1, 94]或similer,以便它们可用于列和颜色配置

原始数据

res.data[{system:'sys1'},
         {system:'sys1'},
         {system:'sys2'},
         {system:'sys1'},
         {system:'sys3'},
         {system:'sys3'}]

获取密钥

var array_elements = []
angular.forEach(res.data, function(value, key){
    if (array_elements.indexOf(value.system) === -1){
        array_elements.push(value.system)        
    }
})

array_elements = ["sys1", "sys2",  "sys3"];

配置

var donutData = {
    type : 'donut',
    colors: {
  Cats: $.pfPaletteColors.blue,
  Hamsters: $.pfPaletteColors.green,
  Fish: $.pfPaletteColors.orange,
  Dogs: $.pfPaletteColors.red
},
    columns: [
  ['Dogs', 2],
  ['Cats', 2],
  ['Fish', 3],
  ['Hamsters', 1]
],

1 个答案:

答案 0 :(得分:1)

您可以这样做:

var data = [{
  system: 'sys1'
}, {
  system: 'sys1'
}, {
  system: 'sys2'
}, {
  system: 'sys1'
}, {
  system: 'sys3'
}, {
  system: 'sys3'
}];

var tmp = {};
data.forEach(function(x) {
    tmp[x.system] = (tmp[x.system] || 0) + 1;
});

var keys = Object.keys(graphData);

var finalData = [];
for(var i = 0; i < keys.length; i++) {
    var x = [];
    x.push(keys[i]);
    x.push(graphData[keys[i]]);
   finalData.push(x);
}
console.log(finalData);

Fiddle example