数组可以用作d3嵌套键吗?

时间:2017-11-30 19:37:43

标签: d3.js

我有一个电影数据库,我想按类型嵌套。问题是每部电影都可以有多种类型。所以,如果我有几部电影格式如此

[
    {
        title  : 'foo',
        genres : ['Action', 'Comedy', 'Thriller']
    },{
        title  : 'bar',
        genres : ['Action']
    }
]

我想按照每个单独的类型嵌套它们,以便结果是

[
   {
       key: 'Action',
       values: [ { title: 'foo' }, { title: 'bar'} ]

   },{
       key: 'Comedy',
       values: [ { title: 'foo' } ]

   },{
       key: 'Thriller',
       values: [ { title: 'foo' } ]

   }
]

1 个答案:

答案 0 :(得分:2)

不是直接的,但您可以扩展数组

例如:

jj = [{ genre: ['thriller', 'comedy'], title: 'foo'}, { genre: ['thriller', 'action'], title: 'papa'}]

展开你的数组:

jj2  = []
jj.forEach(function(movie) { movie.genre.forEach( function(single_genre) { jj2.push({ language: movie.language, genre: single_genre, title: movie.title } ); } ); })

然后您可以正常执行嵌套:

d3.nest().key(function(d) { return d.genre; }).entries(jj2)