2016-06-04 3 views
0

Я использую графическую библиотеку d3.js, и я использую радарную диаграмму extension, которая, кажется, только принимает объекты данных одним способом. Вместо того, чтобы пытаться изменить код для расширения, я подумал, что было бы проще просто манипулировать моими данными в том виде, который он закодирован для принятия. Если это имеет смысл?Как манипулировать объектами JSON в массив с javascript

Во всяком случае, это мой код;

Мой JSON:

{ 
    "questions": ["Staff is courteous and polite","Attentive staff","Modern brand","Innovative brand","Good employer","Company I trust","Place for kids and family","Place for young people","Affordable food"], 
    "organizations": ["MC", "BK", "KFC"], 
    "dates": ["Jan", "Feb", "Mar"], 
    "values": [ [ 
      [40, 15, 13], 
      [25, 24, 14], 
      [1, 23, 20]] ... etc etc 

Javascript: Структура выхода

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

    var newValue =[]; 

    var yellow = [ 
     [ 
      {"label":"A","value":6}, 
      {"label":"B","value":4}, 
      {"label":"C","value":6}, 
      {"label":"D","value":5.5}, 
      {"label":"E","value":8}, 
      {"label":"F","value":7}, 
      {"label":"G","value":9}, 
      {"label":"H","value":10}, 
      {"label":"I","value":3.5} 
     ] 
    ]; 
    if (error) { 
     console.log(error); 
    } 
    else { 
     data = data; 
    } 

    var newValue = []; 
     var orgS = "MC"; 
     var dateS = "Jan"; 
     for (var question = 0; question < data.questions.length; question++) { 
      var organization = data.organizations.indexOf(orgS); 
      var date = data.dates.indexOf(dateS); 
      newValue.push({ 
       label: data.questions[question], 
       value: data.values[question][organization][date] 
      }); 
     } 

    console.log(newValue); 
    console.log(yellow); 


}); 

консоль:

enter image description here

Так что мой вопрос, как я могу выходные мои данные на консоль как «желтый» (нижний на рис.)?

Я попытался обернуть [] вокруг newValue.push, но он не возвратил желаемого эффекта.

Я надеюсь, что это возможно, любые советы очень ценятся!

Вот plnk все готово -

https://plnkr.co/edit/EBcxa39sal0PAOJxSYKb?p=preview

(О - и я действительно не был уверен, что подходящее название для этого вопроса должно быть, пожалуйста приветствовать редактировать/предложить новый чтобы более точно описать проблему).

+0

Не очень понятно, что соотношение первоначальных свойств 'организаций, дат, values' являются конечным результатом в лице' yellow'. Покажите пример реального ожидаемого результата – charlietfl

+0

@charlietfl Я не совсем уверен, как ответить, между ними нет никаких предполагаемых отношений. Это именно тот метод, который у меня есть для фильтрации через мои данные, и я хотел бы попытаться выяснить способ вывода его так же, как желтый, как та структура, которая принимается плагином. В принципе, я пытаюсь сделать ярлык, если это поможет. – since095

+0

Ну, не зная, как соответствовать значению и метке, что затрудняет нам знать, что делать. т.е. * «ожидаемые результаты» * – charlietfl

ответ

1

Хотя я не вижу смысла ...

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

    var newValue =[]; 

    var yellow = [ 
     [ 
      {"label":"A","value":6}, 
      {"label":"B","value":4}, 
      {"label":"C","value":6}, 
      {"label":"D","value":5.5}, 
      {"label":"E","value":8}, 
      {"label":"F","value":7}, 
      {"label":"G","value":9}, 
      {"label":"H","value":10}, 
      {"label":"I","value":3.5} 
     ] 
    ]; 
    if (error) { 
     console.log(error); 
    } 
    else { 
     data = data; 
    } 

    var newValue = []; 
     var orgS = "MC"; 
     var dateS = "Jan"; 
     for (var question = 0; question < data.questions.length; question++) { 
      var organization = data.organizations.indexOf(orgS); 
      var date = data.dates.indexOf(dateS); 
      newValue.push({ 
       label: data.questions[question], 
       value: data.values[question][organization][date] 
      }); 
     } 

    var newArrayValue = []; 
    newArrayValue.push(newValue); 

    console.log(newValue); 
    console.log(newArrayValue); 
    console.log(yellow); 


}); 

https://plnkr.co/edit/UrmWt5AgqAuJWe8cO1Bi?p=preview

+0

Ну ладно, делает то, что мне нужно! Благодаря :) – since095

Смежные вопросы