2017-02-23 22 views
1

這是我的JSON數據:JSON計數和排序的JavaScript

{ 
    "EF": [ 
    { 
     "OP": "op1", 
     "pound": 2000, 
     "Date": "2012-1-13T00:00:00.000Z" 
    }, 
    { 
     "OP": "op1", 
     "pound": 1800, 
     "Date": "2014-12-6T00:00:00.000Z" 
    }, 
    { 
     "OP": "op2", 
     "pound": 300, 
     "Date": "2013-6-1T00:00:00.000Z" 
    } 
    ] 
} 

我想計數每個參數值和排序他們從最大到最小,有一個像這樣的表:

OP:OP1(2),OP2(1)磅:2000,1800,300日期: 2014-12-6T00:00:00.000Z,2013-6-1T00:00:00.000Z, 2012-1 -13T00:00:00.000Z

我試圖使用d3.nest(),但我沒有太多的成功。有什麼想法嗎?

+0

最大到最小呢? –

+0

首先,您需要將JSON字符串解析爲一個普通的ol'javascript對象 - 然後您可以對其進行排序或執行任何操作......您的「表」不會按照方式查看所有表格 –

+0

我想要計算字符串字段(「OP」)的出現。對於數字和日期字段,我只想找到對數據進行排序 – Amir

回答

1

//JSON from db? 
 
var json = { 
 
    "EF": [{ 
 
    "OP": "op1", 
 
    "pound": 2000, 
 
    "Date": "2012-1-13T00:00:00.000Z" 
 
    }, { 
 
    "OP": "op1", 
 
    "pound": 1800, 
 
    "Date": "2014-12-6T00:00:00.000Z" 
 
    }, { 
 
    "OP": "op2", 
 
    "pound": 300, 
 
    "Date": "2013-6-1T00:00:00.000Z" 
 
    }] 
 
}; 
 

 
//Sort based on pound 
 
json.EF.sort(function(a, b) { 
 
    if (a.pound < b.pound) return 1; 
 
    if (a.pound > b.pound) return -1; 
 
    return 0; 
 
}); 
 

 
var hash = {}; //Keep track of counts 
 
//Count the values 
 
for (var i in json.EF) { 
 
    var obj = json.EF[i]; 
 
    if (hash[obj.OP]) { 
 
    hash[obj.OP] += 1; 
 
    } else { 
 
    hash[obj.OP] = 1; 
 
    } 
 
} 
 

 
//Sorted 
 
console.log("SORTED:", json); 
 
console.log("COUNTS:", hash); 
 

 
//Now, when you loop through the json to display the values, just check the counts and display them

+0

甜。我明白了現在該做什麼。謝謝Matt – Amir

+0

@Amir沒問題。 :) – matt

+0

確定此解決方案不適用於我的大型數據庫。我有10,000個不同OP值的記錄。你有什麼建議?再次感謝! – Amir