Javascript在两个二维数组之间找到常用值

时间:2014-11-13 09:51:41

标签: javascript multidimensional-array

我有两个二维数组,如:

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没有返回所需的结果。

2 个答案:

答案 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);

DEMO FIDDLE

相关问题