从服务器返回的数据结构如下:
{date:'2/1', name: 'product 1', count: 10}
{date:'2/1', name: 'product 2', count: 5}
{date:'2/1', name: 'product 3', count: 15}
{date:'2/2', name: 'product 1', count: 11}
{date:'2/2', name: 'product 2', count: 6}
我必须运行一堆循环和字符串操作来为堆叠条形图创建以下数据结构。
{date:'2/1', product_1: 10, product_2: 5, product_3: 15 }
{date:'2/2', product_1: 11, product_2: 6, product_3: 0}
有更优雅的方法来解决这个问题吗?我对服务器端没有太多的控制权。
我认为从一种转换到另一种的代码应该是相当简单的。
var dates = {};
var dataOut = [];
Ext.Array.each(dataIn, function(item) {
var dateObj = dates[item.date];
if (!date) {
dates[item.date] = dateObj = {dateObj: item.date};
dataOut.push(dateObj);
}
dateObj[item.name] = item.count;
});
我不认为Ext中有任何帮助类来进行这种特殊的转换,我也不认为图表系统可以接受不同的数据格式。您可以编写自己的Model
引用原始数据,但我认为这将比上面的代码更多的工作。