2017-12-27 6 views
-1

Ich erhalte von API etwas wie folgt aus:Verarbeitung von Daten von API für Tabelle Rendering

"stats": [ 
    { 
     "label": 2016, 
     "stats": { 
      "return": 4, 
      "stddev": 4, 
      "sharpe": 4, 
      "maxddown": 4 
     } 
    }, 
    { 
     "label": 2015, 
     "stats": { 
      "return": 5, 
      "stddev": 5, 
      "sharpe": 5, 
      "maxddown": 5 
     } 
    }, 
    { 
     "label": 2014, 
     "stats": { 
      "return": 6, 
      "stddev": 6, 
      "sharpe": 6, 
      "maxddown": 6 
     } 
    } 
] 

Ich sollte die Daten in Array von Objekten verwandeln, die ich in Ember App Rendern einer Tabelle verwendet werden. Ich habe keine Ahnung, wie ... Die endgültigen Daten für die Tabelle sieht sein sollte wie:

const tableData = [ 
    { 
     name: 'return', 
     2016: 4, 
     2015: 5, 
     2014: 6 
    }, { 
     name: 'stddev', 
     2016: 4, 
     2015: 5, 
     2014: 6 
    }, { 
     name: 'sharpe', 
     2016: 4, 
     2015: 5, 
     2014: 6 
    }, { 
     name: 'maxddown', 
     2016: 4, 
     2015: 5, 
     2014: 6 
    } 
] 

Antwort

2

Holen Sie die Schlüssel des stats und iterieren es. Im Iterationszyklus müssen Sie über alle stats iterieren, auf die Eigenschaft jedes stats mit dem ausgewählten key zugreifen und Ihr Objekt erstellen.

const stats = [ 
 
    { 
 
     "label": 2016, 
 
     "stats": { 
 
      "return": 4, 
 
      "stddev": 4, 
 
      "sharpe": 4, 
 
      "maxddown": 4 
 
     } 
 
    }, 
 
    { 
 
     "label": 2015, 
 
     "stats": { 
 
      "return": 5, 
 
      "stddev": 5, 
 
      "sharpe": 5, 
 
      "maxddown": 5 
 
     } 
 
    }, 
 
    { 
 
     "label": 2014, 
 
     "stats": { 
 
      "return": 6, 
 
      "stddev": 6, 
 
      "sharpe": 6, 
 
      "maxddown": 6 
 
     } 
 
    } 
 
]; 
 

 
const keys = Object.keys(stats[0].stats); 
 

 
const mapped = keys.map(key => { 
 

 
    const obj = { name: key }; 
 

 
    stats.forEach(item => { 
 
    obj[item.label] = item.stats[key]; 
 
    }); 
 
    
 
    return obj; 
 
}); 
 

 
console.log(mapped);

Verwandte Themen