数据表中数组元素的表示

Array elements representation in data table

本文关键字:表示 数组元素 数据表      更新时间:2023-09-26

我有一个数据集,其中一些字段值是数组,我想使用交叉过滤器和d3.js或dc.js来显示这个数据表。
我试过用下面的代码:

var data = [
{"Name":"ajay","interests":[{"games":"vally"},{ "games":"cricket"}]},
]
var assetDataCF = crossfilter(data );
var dimByHostName = assetDataCF.dimension(function(d){return d.Name; });
var apSecAdvConfig = dc.dataTable('#apSecAdvConfig');
        apSecAdvConfig
            .dimension(dimByHostName)
            .group(function(d){ return "" })
            .transitionDuration(1000)
            .columns([ 
                  function(d) { return d.Name;},
                  function(d) { var s=d.interests,
                                  a=[];
                        for(var i=0;i<s.length;i++)
                        {
                             a.push(d.s[i].games);
                        } return a;}
                 }];

显示表格如下:

-------------------------------
name   ---   games
-----------------------------
 ajay   ---   vally,cricket
------------------------------

…但我想要的结果是:


   name   ---   games
 ------------------------
   ajay   ---   vally
  -----------------------
   ajay   ----   cricket
  ------------------------
**********************************************

有谁知道如何实现这一点吗?

我们可以改变数据集

    var data = [
    {"Name":"ajay","interests":[{"games":"vally"},{ "games":"cricket"}]},
    {"Name":"cyril","interests":[{"games":"football"}]},
    ];
var newData = [];
data.forEach(function (person) {
    person.interests.forEach(function (interest) {
        newData.push({
            Name: person.Name,
            interest: interest.games
        })
    })
})

上面的函数将使新数据集如下:

    [{"Name":"ajay","interest":"vally"},
{"Name":"ajay","interest":"cricket"},
{"Name":"cyril","interest":"football"}]

张贴你的代码可以在上面创建的newData集上工作像这样:

var assetDataCF = crossfilter(newData );
//oldcode...