2015-05-18 10 views
2

У меня есть JSON-файл, как это:Получить максимальное значение из JSON объектов D3JS

{ 
    "directed":false, 
    "graph":[ 
     [ 
     "node_default", 
     { 

     } 
     ], 
     [ 
     "name", 
     "()_with_int_labels" 
     ], 
     [ 
     "edge_default", 
     { 

     } 
     ] 
    ], 
    "nodes":[ 
     { 
     "id":0, 
     "Year":1996, 
     "Venue":"SWAT", 
     "cYear":1996, 
     "label":"The randomized complexity of maintaining the minimum" 
     }, 
     { 
     "id":1, 
     "Year":1998, 
     "Venue":"SWAT", 
     "cYear":1998, 
     "label":"Probabilistic data structures for priority queues" 
     } 
    ], 
    "links":[ 
     { 
     "Edge Id":"12640", 
     "target":65, 
     "source":0, 
     "Year":2011 
     }, 
     { 
     "Edge Id":"12714", 
     "target":50, 
     "source":0, 
     "Year":1996 
     } 
    ], 
    "multigraph":false 
} 

я хотел бы получить максимальное значение переменной Year из nodes и показать его в журнале консоли в первом а затем использовать его как переменную для дальнейшей обработки.

То, что я сделал это:

d3.json("swatwads.json", function(error, graph) { 
    graphdata=graph; 
    graphRec=JSON.parse(JSON.stringify(graph)); //Add this line 

    // Node and Link habitual defitions 

    console.log(d3.max(d3.values(graph.nodes, function(d) {return d.Year;}))); 

    }); 

Когда я запускаю код он извлекает весь объект первого nodes а то, что я хочу, это максимальное значение переменной Year из nodes объектов.

Что я сделал не так? И как я могу это исправить?

Спасибо!

+1

Почему вы строчите свой объект 'graph', затем верните строку обратно в объект, используя синтаксический анализ? Это кажется ненужным. Если это уже какой-то объект, поменяйте его на json, чтобы просто вернуть его обратно в obj ??? 'graphRec = JSON.parse (JSON.stringify (graph)); Или вы пытаетесь сломать ссылку? – Liam

+1

'graphdata == graph == graphRec' все 3 из этих объектов кажутся бессмысленными. Просто используйте график! – Liam

+1

@ Liam кажется законным, я увидел пример, который говорит, что это хорошая практика, когда дело доходит до получения данных, но не в моем случае. Я удалил эту строку, но все равно получаю те же результаты. – user1885868

ответ

4

Вы просто хотите линии

console.log(d3.max(graph.nodes, function(d) {return d.Year;})); 

Working fiddle

Таким образом, вы просто хотите, значение max в year от graph.nodes

Полный пример

d3.json("swatwads.json", function(error, graph) { 
    console.log(d3.max(graph.nodes, function(d) {return d.Year;})); 
    }); 
1

Это делает то, что вы хотите?

d3.json("swatwads.json", function(error, graph) { 
    var nodes = graph.nodes 
    var max = 0 
    for (var ii=0, node; node=nodes[ii]; ii++){ 
    if (node.Year > max) { 
     max = node.Year 
    } 
    } 
    console.log(max) 
} 
+0

Этот вид поражает объект использования d3, если вы просто собираетесь это сделать сами? – Liam

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