javascript - 比较和匹配具有相似键/值对的两个数组的长度

时间:2013-09-20 15:31:51

标签: javascript arrays sorting d3.js

使用时间缩放x轴事件在d3中使用图形挂钩。用图解释整个情况毫无意义,但我得出了一个解决方案的结论。为此,我想出了这个解决方案,我很困惑。

Imgine我有一个对象:

{
    "values" : [ [ 1136005200000 , 1271000.0] , [ 1138683600000 , 1271000.0] , [ 1141102800000 , 1271000.0] , [ 1143781200000 , 0] , [ 1146369600000 , 0]
}

让我们说它有成对:[x,y]。 x看起来像'1136005200000',这是一个UTC解析日期。

我需要做的是创建一个虚拟对象。在那个对象中,我需要设置默认日期,比如7天用一些解析过的数字。此外,我需要确保上面对中不存在的日期将'y'输入为0,然后将对象最终确定为7天,只需插入可用的值。

任何想要分享的想法或方法,请继续!

1 个答案:

答案 0 :(得分:0)

例如,您有两个数组:

var arr1 = [{a:1,b:34},{..} ..]长度为10 var arr2 = [{a:1,b:0}] upto length< 10

在某些头脑风暴之后,我以某种方式设法使用这几行来修复它。

预先计算一个查找表,将“时间”映射到替换“计数”

var lookup = {}, i, e;
for(i = 0, e = arr2[i]; i < arr2.length; e = arr2[++i])
  lookup[e.time] = e.count;

旋转目标阵列&amp;合并来自查找'arr2'的'count'

for(i = 0, e = arr1[i]; i < arr2.length; e = arr2[++i])
  e.count = lookup[e.time] || 0; // Finalizes `arr2` after merging

如果不存在值,则指定零,并使用类似的键值对进行合并。