Javascript:将数组的数组拆分为多个数组

Javascript: Split array of arrays into multiple arrays

这里有严重的问题,我有一个这样的数组:

[[0,50],[0,68],[1,26],[2,9],[2,32]]

我需要的形式是将这个数组分成两个单独的数组,如下所示:

array1 = [[0,50][1,0][2,9]]
array2 = [[0,68][1,26][2,32]]

是的,你们是对的,我需要它来构建图表。

如果有人对数据源感兴趣,这就是它在 firebase 中的样子:

{
  "1433203200000" : {
    "-JpgJnANTpQFprRieImv" : {
      "events" : 5,
      "name" : "Home office",
      "returningVisitors" : 9,
      "totalVisitors" : 50
    },
    "-JqsQjFTjHpzKqWgE_KJ" : {
      "events" : 10,
      "name" : "Samin Place",
      "returningVisitors" : 32,
      "totalVisitors" : 68
    }
  },
  "1433289600000" : {
    "-JqsQjFTjHpzKqWgE_KJ" : {
      "name" : "Samin Place",
      "newVisitors" : 1,
      "returningVisitors" : 25,
      "totalVisitors" : 26
    }
  },
  "1433376000000" : {
    "-JpgJnANTpQFprRieImv" : {
      "events" : 5,
      "name" : "Home office",
      "returningVisitors" : 9,
      "totalVisitors" : 9
    },
    "-JqsQjFTjHpzKqWgE_KJ" : {
      "events" : 10,
      "name" : "Samin Place",
      "returningVisitors" : 32,
      "totalVisitors" : 32
    }
  }
}

重点是循环每个时间戳和每个 child,我们有 totalVisitors,这是我的图表需要的值。

奖金

如您所见,第一个时间戳有两个 child 没问题,但第二个时间戳只有一个 child - "-JqsQjFTjHpzKqWgE_KJ" 所以我需要为缺失添加空值一个到新数组(在我们的例子中它是 array1 第二个位置)。

这就是我所说的挑战 :)

非常感谢任何帮助,感谢关注。

编辑:

也许如果它可以帮助某人这是我需要的图表

here is link

X-axis - 是时间戳
Y-axis - totalVisitors 值
行 - 每个唯一的时间戳 child

如果您使用的是 jQuery,类似的东西应该可以工作。如果您不是简单地用标准 js 语句替换 jquery 语句。 (我准备了一个jsfiddle:jsfiddle:

var first = []
var second = [];
var my_data = {
  "1433203200000" : {
    "-JpgJnANTpQFprRieImv" : {
      "events" : 5,
      "name" : "Home office",
      "returningVisitors" : 9,
      "totalVisitors" : 50
    },
    "-JqsQjFTjHpzKqWgE_KJ" : {
      "events" : 10,
      "name" : "Samin Place",
      "returningVisitors" : 32,
      "totalVisitors" : 68
    }
  },
  "1433289600000" : {
    "-JqsQjFTjHpzKqWgE_KJ" : {
      "name" : "Samin Place",
      "newVisitors" : 1,
      "returningVisitors" : 25,
      "totalVisitors" : 26
    }
  },
  "1433376000000" : {
    "-JpgJnANTpQFprRieImv" : {
      "events" : 5,
      "name" : "Home office",
      "returningVisitors" : 9,
      "totalVisitors" : 9
    },
    "-JqsQjFTjHpzKqWgE_KJ" : {
      "events" : 10,
      "name" : "Samin Place",
      "returningVisitors" : 32,
      "totalVisitors" : 32
    }
  }
} 
var count = 0;
$.each(my_data, function(key, value){
    if (value["-JpgJnANTpQFprRieImv"]){
        first.push([count, value["-JpgJnANTpQFprRieImv"]["totalVisitors"]])
    } else {
        first.push([count, 0])
    }
    if (value["-JqsQjFTjHpzKqWgE_KJ"]){
        second.push([count, value["-JqsQjFTjHpzKqWgE_KJ"]["totalVisitors"]])
    } else {
        second.push([count, 0])
    }
    count++;
});

我为你创建了 jsfiddle。请问一下,是您需要的吗?

http://jsfiddle.net/1vdryy3L/1/

// first, we'll get all possible keys ('key' is e.g. "-JpgJnANTpQFprRieImv")
var keys = [];
for (var i in data) {
    for (var j in data[i]) {
        if (keys.indexOf(j) == -1) {
            keys.push(j);
        }        
    }
}

var result = {}, tmp, k;
for (i in keys) {
    tmp = []; k = 0;
    for (var j in data) {
        if (data[j][keys[i]]) {
            tmp.push([k, data[j][keys[i]].totalVisitors]);
        } else {
            tmp.push([k, 0]);
        }
        k++;
    }
    result['array' + i] = tmp;
}

console.log(JSON.stringify(result));