处理来自API的数据以进行表格渲染

时间:2017-12-27 07:14:32

标签: javascript arrays sorting object ember.js

我从API收到类似的内容:

$query = $model->getFormations()->createCommnad()->rawSql;

我应该将数据转换为对象数组,我将用它来渲染Ember应用程序中的表。我不知道如何......表格的最终数据应如下所示:

"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
        }
    }
]

1 个答案:

答案 0 :(得分:2)

获取stats的密钥并迭代它。在迭代周期中,您需要遍历所有stats,使用选定的stats访问每个key的属性并创建您的对象。

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);