我有两个数组。阵列A的长度是固定的,阵列B的长度取决于DB结果。 阵列A和B都是键(时间戳)值(计数)对阵列。在数组B中缺少一些时间戳,我需要将缺少的时间戳值填充为零。如果存在时间戳,我需要使用该值。 我如何实现这一目标?
例: 数组A = {[时间:1481280113,值:0],[时间:1481280053,值:0],..}
数组B = {[时间:1481280113,价值:1234],[时间:1481279983,价值:123],..}
结果A = {[时间:1481280113,价值:0],[时间:1481280053,价值:0],[时间:1481279983,价值:123] ..}
答案 0 :(得分:0)
你知道MergeSort算法吗?你可以使用它的mege部分,所以:
function mergeArrays(arr1, arr2){
var a1 = sort array1; //any way you want (EX. 1 < 2 < 3 ...)
var a2 = sort array2; //any way you want (EX. 1 < 2 < 3 ...)
var result = [];
while(a1.length > 0 && a2.length > 0) {
if(a1[0] < a2[0]) { result.push(a1.shift()); }
if(a1[0] > a2[0]) { result.push(as.shift()); }
if(a1[0] == a2[0]) { /* equals, do whatever you want to resolve this */ }
}
if (a1.length == 0) { result.concat(a2); /* no more elements in a1, append to result the remains of a2*/ }
if (a2.length == 0) { result.concat(a1); /* no more elements in a2, append to result the remains of a1*/ }
return result
}
这将返回合并的数组(并已排序),但是,如果你不在a1 [0] == a2 [0]的情况下删除重复项,你将获得那些副本,因此,请注意。< / p>