2017-08-16 5 views
1

データを名前でネストする方法がわかりません。d3に名前でデータをネストする方法は?

私のデータは次のようになります。

var data = [ 
      [[{name: "Bonpoint"}], [ 
       {axis: "Coton", value: 1}, 
       {axis: "Laine", value: 0.8}, 
       {axis: "Cachemire", value: 0.6}, 
       {axis: "Soie", value: 0.20}, 
       {axis: "Angora", value: 0.20}, 
       {axis: "Autres", value: 0.20}, 
       {axis: "Nylon", value: 0}, 
       {axis: "Acrylique", value: 0}, 
       {axis: "Viscose", value: 0}, 
       {axis: "Polyuréthane", value: 0}, 
       {axis: "Polyester", value: 0.20}]], 

      [[{name: "Petit Bateau"}], [ 
       {axis: "Coton", value: 1}, 
       {axis: "Laine", value: 0.40}, 
       {axis: "Cachemire", value: 0}, 
       {axis: "Soie", value: 0}, 
       {axis: "Angora", value: 0}, 
       {axis: "Autres", value: 0}, 
       {axis: "Nylon", value: 0}, 
       {axis: "Acrylique", value: 0}, 
       {axis: "Viscose", value: 0}, 
       {axis: "Polyuréthane", value: 0}, 
       {axis: "Polyester", value: 0.20}]], 

       ...etc 

私はこのコード行を試みた:

var names = d3.nest() 
       .key(function (d) {return d[0].map(function (o) {return o.name})}) 
       .entries(data); 

をしかし、私はconsole.log(names)を入力すると、私が得るすべては、配列オブジェクトと直接ではなく名前です。私がnameの私のdataに直接アクセスする方法を知っていますか?

ありがとうございます。代わりにentries()

+0

はどうなりますか? –

+0

@ Ryan Morton:「未定義の」メッセージがあります... – solub

+0

JSONオブジェクトをより詳細に見ると、すでにネストされています。私はあなたがオブジェクトをマップし、キー=名前、第2のキー=軸、および値=値を設定する必要があると思います。 –

答えて

1

object()(またはmap())を使用してみてください:あなたがコンソールログに `names.key`を入れたときに

var names = d3.nest() 
      .key(function (d) {return d[0].map(function (o) {return o.name})}) 
      .object(data); 

console.log(names.keys()) 
// => ["Bonpoint", "Petit Bateau"] 

console.log(names.Bonpoint) 
// => [[{name: "Bonpoint"}], Array] 
+0

マークありがとうございます!それはまさに私が探していたものです。 :) – solub

関連する問題