将数组元素重新排列为两个新数组



我有一个 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]]);
}

最新更新