2016-06-04 1 views
0

저는 d3.js 차트 라이브러리를 사용하고 있으며 데이터 객체를 한 방향으로 받아 들일만한 extension 레이더 차트를 사용하고 있습니다. 확장을위한 코드를 변경하는 대신, 데이터를 받아들이도록 코딩 된 종류로 조작하는 것이 더 쉬울 것이라고 생각했습니다. 이해가된다면?자바 스크립트를 사용하여 JSON 객체를 배열로 조작하는 방법

아무튼, 이것이 내 코드입니다.

내 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 

자바 스크립트 :

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

그래서 내 질문은, 어떻게 콘솔에 할 수 있습니까 출력 내 데이터 var "노랑"(사진의 맨 아래 부분)과 같이?

newValue.push 주위에 []을 감싸려고했지만 원하는 효과를 반환하지 않았습니다.

나는 이것이 가능하기를 바래, 어떤 조언을 많이 주시면 감사하겠습니다! 여기

모두가 설정 plnk입니다 -

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

(아 - 그리고 난 정말이 질문에 대한 적절한 제목이 될, 편집에 오신 것을 환영 주시기 바랍니다해야하는지 확실하지 않았다/새로운 제안 하나는 문제를보다 정확하게 설명합니다.) 나는 지점이 표시되지 않지만

+0

하지 않음 최종 결과로, values' 무엇 원래 속성 '조직, 날짜의 관계를 매우 명확'로 대표되는 노란색. 실제 예상 결과의 예를 보여주세요. – 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

관련 문제