首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用JavaScript实现C3数据的数据结构/格式

使用JavaScript实现C3数据的数据结构/格式
EN

Stack Overflow用户
提问于 2018-09-28 04:26:19
回答 1查看 137关注 0票数 1

我正在尝试将对象数组转换为创建C3条形图所需的格式,但在使用JavaScript对数据进行分类时遇到了问题。下面是我的JavaScript代码。

代码语言:javascript
复制
data = [
  {Service:"Army",Permanent:20,Itinerant:754,Region:"Western"},
  {Service:"Air Force",Permanent:100,Itinerant:2,Region:"Eastern"},
  {Service:"Army",Permanent:10,Itinerant:7,Region:"Western"},
  {Service:"Air Force",Permanent:30,Itinerant:2,Region:"Eastern"}
]

var sumAry=[];

for (var x=0; x<data.length; x++){
   var val =sumAry.indexOf(data[x].Service);
  if(val === -1){
     var permanent += data[x].Permanent;
     sumAry.push(data[x].Service, permanent);
  }else{
    console.log("IN");
  }
}

https://codepen.io/isogunro/pen/GYRKqE?editors=0012

C3图表以如下所示的结构/格式查找数据:

代码语言:javascript
复制
        ['Army', 30],
        ['Airorce', 130],
        ['Navy', 190],
        ['Army1', 70],
        ['Airorce2', 130],
        ['Navy3', 100]

对于每个值,都会将“Permanent”属性相加,以获得数组的数字部分。它变成了所有信息的集合。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-28 04:37:09

假设首选格式的数字来自Permanent属性,则可以使用Array.map来转换数据集。

代码语言:javascript
复制
var data = [{
        Service: "Army",
        Permanent: 654,
        Itinerant: 754,
        Region: "Western"
    },
    {
        Service: "Air Force",
        Permanent: 9,
        Itinerant: 2,
        Region: "Eastern"
    },
    {
        Service: "Army",
        Permanent: 6,
        Itinerant: 7,
        Region: "Western"
    },
    {
        Service: "Air Force",
        Permanent: 9,
        Itinerant: 2,
        Region: "Eastern"
    }
];

var aggregates = data.map(function (o) {
    // map original objects to new ones with zeroed-out data
    return {
        Service: o.Service,
        Permanent: 0,
    }
}).filter(function (o, index, a) {
    // filter the list to have only unique `Service` properties
    var service = o.Service;
    var i;
    for (i = 0; i < a.length; i += 1) {
        if (a[i].Service === service) {
            // break out of the loop when the first matching `Service` is found.
            break;
        }
    }
    // `i` is now the index of the first matching `Service`.
    // if it's the first occurrence of that `Service`, keep it, otherwise ditch it.
    return i === index;
});

data.forEach(function (o) {
    // loop through the aggregate list and get the matching `Service` property.
    var agg = aggregates.filter(function (p) {
        return o.Service === p.Service;
    })[0]; // first element is the match.
    // sum the `Permanent` properties.
    agg.Permanent += o.Permanent;
});

// now that the data has been aggregated, transform it into the needed structure.
var c3data = aggregates.map(function (d) {
    return [d.Service, d.Permanent];
});

console.log(JSON.stringify(c3data));

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52544643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档