繁体   English   中英

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

[英]Merge two arrays in alternating sequence in Jquery

我有两个数组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"

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

您可以为此使用reduceconcat

 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); 

或者只是forforEach循环:

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

将产生相同的结果。

var C = [];
for (var i = 0; p < 3; i++) {
  C.push(A[i]);
  C.push(B[i]);
}
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];

基本上,根据i是偶数还是奇数,它用AB项填充C

注意,我将i/2|0用作快捷方式,但仅在l小于2 31时才可以使用。 为了安全起见,请使用Math.floor(i/2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM