[英]Javascript find common values between two 2-D arrays
我有兩個二維數組,例如:
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沒有返回期望的結果。
對於您的代碼,我假設您要尋找的是為兩個數組中的每個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 };
但是,這可以說是有爭議的,因此請記住這一點。
我認為,可能會使您的代碼無法按需工作的原因是,您在其他情況之后會丟失{},因此在每次迭代中,您推入b的值始終為data_solargeneration_dollars [i] [1];
可悲的是,這只是一個假設,因為我實際上不確定您要的是什么...
這是我嘗試解決此問題的方式。
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.