jQuery键值对数组一替换第二个数组的元素。

时间:2016-12-09 10:45:42

标签: javascript jquery html arrays

我有两个数组。阵列A的长度是固定的,阵列B的长度取决于DB结果。 阵列A和B都是键(时间戳)值(计数)对阵列。在数组B中缺少一些时间戳,我需要将缺少的时间戳值填充为零。如果存在时间戳,我需要使用该值。 我如何实现这一目标?

例: 数组A = {[时间:1481280113,值:0],[时间:1481280053,值:0],..}

数组B = {[时间:1481280113,价值:1234],[时间:1481279983,价值:123],..}

结果A = {[时间:1481280113,价值:0],[时间:1481280053,价值:0],[时间:1481279983,价值:123] ..}

1 个答案:

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