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 第二个位置)。
这就是我所说的挑战 :)
非常感谢任何帮助,感谢关注。
编辑:
也许如果它可以帮助某人这是我需要的图表
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));
这里有严重的问题,我有一个这样的数组:
[[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 第二个位置)。
这就是我所说的挑战 :)
非常感谢任何帮助,感谢关注。
编辑:
也许如果它可以帮助某人这是我需要的图表
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));