我有一个 JSON 编码的数组,有 5000 行,如下所示:
[2013-01-01 07:00, 10, 50]
为了绘制具有两个 y 轴的 jqplot,我需要从这个数组中获取两个不同的数组,如下所示:
array1: [2013-01-01 07:00, 10]
array2: [2013-01-01 07:00, 50]
我尝试的是以下方法,但似乎效果不佳:
var data= <?php echo json_encode($dataarray); ?>;
var array1= [];
var array2 = [];
for(var i=0, len=data.length; i<len; i++){
array1[i] = array1[i][0]+array1[i][1];
array2[i] = array2[i][0]+array2[i][2];
};
有人可以帮忙,或者是否有更简单的方法可以使用我的原始数组绘制 2 y 轴图,而无需拆分数组元素?
假设它们都在数组中并且项目都是相同的形状,您可以使用以下代码段:
var data = [
['2013-01-01 07:00', 10, 50],
['2013-01-01 08:00', 20, 70]
]
var array1 = data.map(function(item){ return [item[0], item[1]]});
var array2 = data.map(function(item){ return [item[0], item[2]]});
或者,您可以更改原始方法:
var array1 = [];
var array2 = [];
for(var i=0, len=data.length; i<len; i++){
array1.push([data[i][0], data[i][1]]);
array2.push([data[i][0], data[i][2]]);
};
最后,我认为数组通常更适合存储相同类型的项目。您的原始数据可能更适合这样的结构:
var data = [
{ date: '2013-01-01 07:00', first : 10, second: 50},
{ date: '2013-01-01 07:00', first : 20, second: 70}
]
相同的解决方案只需稍作修改即可工作。
这是 O(n) 时间复杂度方法:
var data= <?php echo json_encode($dataarray); ?>;
var array1 = [];
var array2 = [];
var len = data.length;
for (i = 0; i < len; i++) {
array1.push([data[i][0], data[i][1]]);
array2.push([data[i][0], data[i][2]]);
}