1

我希望将两个数组合并为一个,但不能使用 datetime 进行复制,基本上不能合并两个数组中具有相同日期时间的两个结果。

  • 在每个数组中,从不重复日期时间。
  • 两个数组具有相同的结构,具有相同的确切位置。
  • 每个阵列有 +60 个子阵列。

例子:

Array1 = [[a,b,0000-00-00 00:00],[c,d,0000-00-00 00:59],[e,f,0000-00-00 00:10]];
Array2 = [[z,x,0000-00-00 00:00],[h,s,0000-00-00 00:49],[e,f,0000-00-00 00:20]];


Array12 = [[a,b,0000-00-00 00:00],[c,d,0000-00-00 00:59],[e,f,0000-00-00 00:10],[h,s,0000-00-00 00:49],[e,f,0000-00-00 00:20]];

我怎样才能使这项工作?我尝试了很多功能,但无法正常工作。

谢谢。

4

1 回答 1

2

如果我是正确的,您正在尝试合并基于时间戳的数组。试试这个小提琴

var Array1 = [
    ['a', 'b', '0000-00-00 00:00'],
    ['c', 'd', '0000-00-00 00:59'],
    ['e', 'f', '0000-00-00 00:10']
];
var Array2 = [
    ['z', 'x', '0000-00-00 00:00'],
    ['h', 's', '0000-00-00 00:49'],
    ['e', 'f', '0000-00-00 00:20']
];

function mergeArrays(arr1, arr2) {
    var merger = {};

    for (var i = 0; i < arr1.length; i++) {
        merger[arr1[i][2]] = [arr1[i][0], arr1[i][1], arr1[i][2]];
    }

    for (var i = 0; i < arr2.length; i++) {
        if (!(arr2[i][2] in merger)) {
            merger[arr2[i][2]] = [arr2[i][0], arr2[i][1], arr2[i][2]];
        }
    }

    var output = [];
    for (var key in merger) {
        output.push(merger[key]);
    }
    return output;
}

var result = mergeArrays(Array1, Array2);
console.log(result);
于 2013-07-25T16:58:25.803 回答