Sommare i valori dal punto finale JSON in base alla categoria [chiuso]

1

Ho un endpoint JSON per progetti in una contea. Sono in grado di chiamare un elenco di qualsiasi proprietà dell'oggetto. Quello che voglio fare è aggiungere insieme tutti i valori della proprietà budget o spent_encumbered del valore della proprietà category .

Ad esempio, il costo totale di tutti i progetti relativi a ponti, progetti provinciali generali, progetti di sistemi scolastici, ecc.

Idee che ho avuto:

  • Restituisce tutti i valori della proprietà della categoria
  • Spingili tutti su un array
  • Esegui un'istruzione if, if data[i].category === "school system projects" // o qualunque valore dell'array?
  • For loop per sommare tutti i valori di budget restituiti per la categoria specifica.

Pensieri?

    
posta giscard78 10.11.2015 - 18:12
fonte

1 risposta

0

Quello che stai cercando è una specie di filtro / mappa / riduzione. Fortunatamente, JavaScript con browser moderni fornisce esattamente questo.

Utilizzare jQuery per ottenere i dati:

$.getJSON('https://opendata.howardcountymd.gov/resource/ghg6-4crr.json', 
           function( data) { cityData = data });

Questo restituisce una bella matrice con tutti gli oggetti già analizzati. Una volta ottenuti i dati, puoi eseguirlo tramite un filtro, ad esempio:

var filteredArray = cityData.filter(
  function(value) {
      return value.fiscal_year='2015' && typeof value.spent_encumbered !== 'undefined'
  }
)

Questo può quindi essere ridotto a un singolo numero, ad esempio:

var total_spent_encumbered = 
  filteredArray.reduce(
    function(previousValue, currentValue, index, array) { 
       return previousValue + Number(currentValue.spent_encumbered) }, 0
  );

Ovviamente puoi combinare tutte queste funzioni e esternalizzare il filtro e ridurre le funzioni interne per permetterti di combinarle entrambe, dandoti molta flessibilità.

Link a JSFiddle

    
risposta data 10.11.2015 - 18:49
fonte

Leggi altre domande sui tag