在Jquery中以交替顺序合并两个数组

时间:2014-10-25 22:10:38

标签: jquery arrays

我有两个数组AB,两个数组都包含很多元素,如下所示:

var A = ["A", "B", "C", "D"];
var B = [1, 2, 3, 4];

现在我想要一个数组C,通过以交替顺序连接它们来“合并”AB,以便

C = ["A", 1, "B", 2, "C", 3, "D", 4]

我试过了:

for (var i = 0; p < 3; i++) {
    C = A[i].concat(B[i])
}

但这导致C = "D4"

如何通过交替选择每个数组的一个元素来实现合并两个数组?

3 个答案:

答案 0 :(得分:2)

您可以同时使用reduceconcat

&#13;
&#13;
var A = ["A", "B", "C", "D"];
var B = [1, 2, 3, 4];

var result = A.reduce(function(prev, curr) {
    return prev.concat(curr, B[prev.length / 2]);
}, []);

alert(result);
&#13;
&#13;
&#13;

或只是forforEach循环:

var result = [];
A.forEach(function(el, i) {
    result.push(el, B[i]);
});

将产生相同的结果。

答案 1 :(得分:2)

var C = [];
for (var i = 0; p < 3; i++) {
  C.push(A[i]);
  C.push(B[i]);
}

答案 2 :(得分:1)

var l = A.length + B.length,
    C = Array(l);
for(var i=0; i<l; ++i)
    C[i] = (i%2 ? B : A)[i/2|0];

基本上,它会使CA中的项目填充B,具体取决于i是偶数还是奇数。

注意我使用i/2|0作为快捷方式,但只有l严格小于2 31 才能使用Math.floor(i/2)。如果您想要安全,请使用{{1}}。