所以我从我的服务器回来了以下数据结构。
{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}
有没有更优雅的方法来解决这个问题。我无法控制服务器方面的事情。
答案 0 :(得分:1)
我认为从一个转换为另一个的代码会相当简单。
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
来引用原始数据,但我认为这比上面的代码更有效。