2014-12-15 19 views
11

Questo è un esempio del mio file JSON.Come ottenere i primi 10 valori in un file JSON

[ 
    {"Variable":"Hello","Variable1":20}, {"Variable":"Hi","Variable1":30}, 
    {"Variable":"How","Variable1":40}, {"Variable":"Who","Variable1":50}, 
    {"Variable":"Where","Variable1":60}, {"Variable":"This","Variable1":100}, 
    {"Variable":"Pork","Variable1":10}, {"Variable":"Creep","Variable1":90}, 
    {"Variable":"Mega Creeps","Variable1":80}, {"Variable":"LOL","Variable1":0}, 
    {"Variable":"ROFL","Variable1":0}, {"Variable":"LMAO","Variable1":0}, 
    {"Variable":"POP","Variable1":0}, {"Variable":"LOVE","Variable1":0}, 
    {"Variable":"PICK","Variable1":0}, {"Variable":"WHIZ","Variable1":0}, 
    {"Variable":"BORED","Variable1":0}, {"Variable":"KILLAH","Variable1":0}, 
    {"Variable":"LOLLING","Variable1":0}, {"Variable":"HALOO HALOO","Variable1":0} 
] 

Come posso ottenere solo la Top 10 dal più alto numero di Variabile1 al minimo? Ma passerò il file JSON come lo stesso formato.

risposta

12

In primo luogo, analizzare il JSON in un array di oggetti:

var data = JSON.parse(json); 

quindi unire sort e slice per raggiungere il tuo obiettivo:

var top10 = data.sort(function(a, b) { return a.Variable1 < b.Variable1 ? 1 : -1; }) 
       .slice(0, 10); 

Vedi Array.sort

+0

C'è un errore di battitura nel confronto. Dovrebbe essere '' a.Variable1> b.Variable1'' – LongZheng

3

È possibile farlo con Alasql Libreria JavaScript. Scarica il file json, analizzalo ed esegui l'istruzione SQL su di esso. Questo è un esempio come prendere top 10 direttamente dal file JSON:

<script src="alasql.min.js></script> 
<script> 
    alasql("SELECT TOP 10 * FROM JSON('mydata.json') ORDER BY Variable1 DESC",[], function(top10){ 
     console.log(top10); 
    }); 
</script> 

Oppure, se si dispone già di dati in memoria:

var data = [{"Variable":"Hello","Variable1":20},{"Variable":"Hi","Variable1":30}]; 
    var res = alasql("SELECT TOP 10 * FROM ? ORDER BY Variable1 DESC",[data]); 

Prova this sample in jsFiddle.

+0

c'è un modo per ottenere questo usando php ?? – Maverick

Problemi correlati