我有两个二维数组,如:
var data_consumed_dollars = [[1356998400000, 0.030380282850000006], [1357002000000, 0.0395505288], [1357005600000, 0.04084797307500001]];
var data_solargeneration_dollars = [[1356998400000, 0.030972182850000006], [1357178400000, 0], [1357182000000, 0], [1357185600000, 0], [1357189200000, 0], [1356998400000, 0.030380282850000006]];
我需要在这两个数组中找到常用值。到目前为止我试过这个
var ab = [];
var data_consumed_dollars_common = [];
for (var i = 0; i < data_consumed_dollars.length; i++) {
var a, b;
if (parseFloat(data_solargeneration_dollars[i][0]) > parseFloat(data_consumed_dollars[i][0])) {
a = data_consumed_dollars[i][0];
ab.push(data_consumed_dollars[i][0]);
}
else a = data_solargeneration_dollars[i][0];
b = data_solargeneration_dollars[i][1];
data_consumed_dollars_common.push([ a, b ]);
}
但是data_consumed_dollars_common没有返回所需的结果。
答案 0 :(得分:2)
对于你的代码,我假设你所寻求的是为两个数组中的每个id获得更大的价值。
这不完全是他们的交集。两个组的交集是一个组,其中包含两个原始组中的元素。
首先,使用Javascript,如果您采用基于类似JSON的对象的数据结构,您可能会更容易运行:
var data_consumed_dollars = { "1356998400000": 0.030380282850000006, "1357002000000": 0.0395505288, "1357005600000": 0.04084797307500001 };
var data_solargeneration_dollars = { "1357174800000": 0, "1357178400000": 0, "1357182000000": 0, "1357185600000": 0, "1357189200000": 0, "1356998400000": 0.030380282850000006 };
然而,这可能是可以说的,所以请记住这一点作为一种选择。
我认为,可能保持代码无法正常工作的是你在else之后缺少{},所以在每次迭代时,你推送到b的值总是data_solargeneration_dollars [i] [1] ;
可悲的是,这只是一个假设,因为我实际上并不确定你要求的是什么......
答案 1 :(得分:0)
这是我试图解决问题的方式。
var data_consumed_dollars = [[1356998400000, 0.030380282850000006], [1357002000000, 0.0395505288], [1357005600000, 0.04084797307500001]];
var data_solargeneration_dollars = [[1356998400000, 0.030972182850000006], [1357178400000, 0], [1357182000000, 0], [1357185600000, 0], [1357189200000, 0], [1356998400000, 0.030380282850000006]];
var matched_elements = [];
for(var x = 0; x < data_consumed_dollars.length; x++){
for(var y = 0; y < data_solargeneration_dollars.length; y++){
if(data_consumed_dollars[x][0] == data_solargeneration_dollars[y][0] && data_consumed_dollars[x][1] == data_solargeneration_dollars[y][1]){
matched_elements.push([data_consumed_dollars[x][0],data_consumed_dollars[x][1]]);
}
}
}
console.log(matched_elements);