我有一个5000行的json编码数组,如下所示:
[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轴图,而不需要拆分数组元素?
答案 0 :(得分:2)
假设它们都在数组中且项目的形状都相同,您可以使用以下代码:
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}
]
同样的解决方案只需稍加修改即可使用。
答案 1 :(得分:0)
这是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]]);
}