2016-06-14 10 views
2

多次元配列をループして最初に月を基準にして値のセットを取得しようとしています。その後、質問と値で配列された別の配列を作成していますそれに関連する。グループ1つの属性に基づく多次元配列

私はこれが意味をなさないことを理解しています。だからここではplnkです。

http://plnkr.co/edit/fpc3fSvoVjhEtlWuuY6m?p=preview

コンソールをチェックすると、var dataから第1コンソール出力は、私は(日付を表す親配列、およびデータを表すその内6つの配列を有する)を達成したい構造体です。

現在のところ、var newValueのインデックスが作成されていますが、この出力を持つ配列をデータ内の各日付に対して作成したいと考えています。

ここにコードがあります。

d3.json("data.json", function(error, data) { 

    var newValue = [] 

    if (error) { 
    console.log(error); 
    } else { 
    data = data; 
    } 

    var dateS = "Jan_2016" 
    var countryS = "Netherlands" 

     for (var question = 0; question < data.questions.length; question++) { 
      var country = data.countries.indexOf(countryS); 
      var date = data.dates.indexOf(dateS); 
     newValue.push({ 
     label: data.questions[question], 
     value: data.values[question][country][date] 
     }) 
    } 
    console.log(newValue) 
}) 


var data = 
[ 
    [ 
     {label: "Large Choice of Food", value: 0}, 
     {label: "Food Quality", value: 0}, 
     {label: "Food freshness", value: 0}, 
     {label: "Taste of food", value: 0}, 
     {label: "Waiting time to recieve food", value: 0}, 
     {label: "Value for money", value: 0} 
    ], 
    [ 
     {label: "Large Choice of Food", value: 0}, 
     {label: "Food Quality", value: 0}, 
     {label: "Food freshness", value: 0}, 
     {label: "Taste of food", value: 0}, 
     {label: "Waiting time to recieve food", value: 0}, 
     {label: "Value for money", value: 0} 
    ], 
    [ 
     {label: "Large Choice of Food", value: 0}, 
     {label: "Food Quality", value: 0}, 
     {label: "Food freshness", value: 0}, 
     {label: "Taste of food", value: 0}, 
     {label: "Waiting time to recieve food", value: 0}, 
     {label: "Value for money", value: 0} 
    ] 
]; 

console.log(data) 

json data;

{ 
    "dates": ["Jan_2016", "Feb_2016", "Mar_2016"], 
    "questions": ["Large choice of food", "Food quality", "Food freshness", "Taste of food", "Waiting time to recieve food", "Value for money"], 
    "countries": ["Netherlands", "Belgium", "France"], 
    "values": [ 
     [ 
      [5, 88, 18], 
      [50, 83, 10], 
      [29, 78, 80] 

     ], 

     [ 
      [46, 51, 61], 
      [95, 21, 15], 
      [49, 86, 43] 

     ], 
     [ 
      [7, 46, 92], 
      [54, 94, 31], 
      [89, 96, 11] 

     ], 
     [ 
      [71, 56, 54], 
      [12, 45, 3], 
      [67, 73, 92] 

     ], 
     [ 

      [28, 89, 97], 
      [15, 66, 91], 
      [19, 89, 72] 
     ], 
     [ 
      [54, 15, 61], 
      [83, 61, 9], 
      [10, 96, 57] 
     ] 
    ] 
} 

私は十分にそれをよく説明してきたかわからないよう、できれば質問は理にかなって、これを理解しようとしている壁に私の先を叩いてきましたか?

とにかく、私にそれをさらに説明してもらいたい場合はお知らせください。アドバイスをいただければ幸いです。

+2

達成したいことを理解できません。たぶん、期待される出力例を追加することができますか? –

+0

私は達成しようとしているものを直接表現するために 'var data'を更新しました。各親配列は月を表しています。 [Plnk](http://plnkr.co/edit/fpc3fSvoVjhEtlWuuY6m?p=preview)。投稿を更新します – since095

+0

あなたの入力と出力があなたが望むものがより明確になる必要があります。私もあなたがしようとしていることを理解していません。どのようにアウトプットが見えるかを書き留めてみましょう。 – wot

答えて

1

私が正しくあなたの質問を理解していれば、あなたはこのを探しています:

d3.json("http://run.plnkr.co/JMKRNs0G3MYBqSnI/data.json", function(error, data) { 
 

 
    var newValue = []; 
 

 
    var dateS = "Feb_2016"; 
 
    var k = data.dates.indexOf(dateS); 
 

 
    for (var i = 0; i < data.countries.length; i++) { 
 
    var country = data.countries[i]; 
 
    var answers = []; 
 
    for (var j = 0; j < data.questions.length; j++) { 
 
     answers.push({ 
 
     label: data.questions[j], 
 
     value: data.values[j][i][k] 
 
     }); 
 
    } 
 
    newValue.push(answers); 
 
    } 
 
    console.log(newValue); 
 
});
<script data-require="[email protected]*" data-semver="3.5.3" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.js"></script>

+0

Stackのスニペットが失敗する理由は? – Midas

+0

私はそれを自分のコードに移植しました。さて、私はちょうど国と日付を切り替えなければなりませんでした([作業計画](http://plnkr.co/edit/TOHR2sfcdYMJdlX7wyJx?p=preview))。助けてくれてありがとう、私はあなたが私の意味を理解して安心しています! – since095

0

あなたは、これはあなたのデータのためのより良いフォーマットだろう達成するために抱き合わせている言ったことによります。

あなたには、国と質問の配列をそれぞれ含む日付オブジェクトの配列があります。質問配列には、一連の回答を含む質問が含まれています。このようにして、データはさまざまな国や質問を持つことができます。質問にはさまざまな回答があります。

var data = [ 
    { 
     'date': 'Jan_2016', 
     'countries': ['Netherlands', 'Belgium', 'France'], 
     'questions': [ 
         {'Large choice of food': [5, 88, 18]}, 
         {'Food quality': [46, 51, 61]}, 
         {'Food freshness': [7, 46, 92. 55, 87]}, 
         {'Taste of food': [71, 56, 54]}, 
         {'Waiting time to recieve food': [28, 89, 97]}, 
         {'Value for money': [54, 15, 44, 61]}, 
        ] 
    }, 
    { 
     'date': 'Feb_2016', 
     'countries': ['Netherlands', 'Belgium', 'France', 'Japan', 'Africa', 'Germany'], 
     'questions': [ 
         {'Large choice of food': [50, 83, 10]}, 
         {'Food quality': [95, 21, 15]}, 
         {'Food freshness': [54, 94, 31]}, 
         {'Taste of food': [71, 56, 54, 14]}, 
         {'Waiting time to recieve food': [15, 66, 91]}, 
         {'Value for money': [83, 61, 9]}, 
        ] 
    } 
];