簡體   English   中英

Javascript查找兩個二維數組之間的公共值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM