D3在嵌套对象数组上分组

时间:2019-02-22 23:12:35

标签: javascript d3.js

我正在使用这样的数据:

     x    y     z
x  1.0  0.4  0.25
y  0.2  1.0 -0.44
z -0.3 -0.3  1.00
[('x', 'x', 1.0),
 ('x', 'y', 0.4),
 ('x', 'z', 0.25),
 ('y', 'x', 0.2),
 ('y', 'y', 1.0),
 ('y', 'z', -0.44),
 ('z', 'x', -0.3),
 ('z', 'y', -0.3),
 ('z', 'z', 1.0)]

我有一个javascript代码,可以对标签名称进行分组,列出所有唯一值并删除重复项,然后给我以下信息:

[{key:"1", tags:[{name:"user1"}, {name:"bot2"}]}, {key:"2", tags:[{name:"user3"}, {name:"bot4"}]}, {key:"3", tags:[{name:"user5"}, {name:"user1"}]}]

我想用D3库替换它。

我正在寻找文档,但是不同版本的参考文献使我很困惑。

1 个答案:

答案 0 :(得分:0)

您不需要d3.js来处理数据。您可以使用普通的javascript。 这是一种实现方法:

    const intialData = [{key:"1", tags:[{name:"user1"}, {name:"bot2"}]},
     {key:"2", tags:[{name:"user3"}, {name:"bot4"}]},
     {key:"3", tags:[{name:"user5"}, {name:"bot1"}]}];
    
    const d1 = intialData.map((ele) => ele.tags);
    log("d1", d1);
    
    let d2 = [];
    d1.forEach((ele) => {
      ele.forEach((ele) => { d2.push(ele.name);});
    });
    log("d2", d2);
    
    const d3 = new Set(d2);
    log("d3", d3);;
    
    const d4 = Array.from(d3);
    log("d4", d4);
    function log(str, obj) { console.log(str+ ":"); console.log(obj);}