【问题标题】:Merge two arrays in alternating sequence in Jquery在Jquery中以交替顺序合并两个数组
【发布时间】:2014-10-25 22:10:38
【问题描述】:

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

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

【问题讨论】:

标签: jquery arrays


【解决方案1】:
var C = [];
for (var i = 0; p < 3; i++) {
  C.push(A[i]);
  C.push(B[i]);
}

【讨论】:

    【解决方案2】:

    您可以同时使用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]);
    });
    

    会产生相同的结果。

    【讨论】:

      【解决方案3】:
      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];
      

      基本上,它用来自AB 的项目填充C,具体取决于i 是偶数还是奇数。

      注意我使用i/2|0 作为快捷方式,但它只能在l 严格小于231 时起作用。如果您想安全,请使用Math.floor(i/2)

      【讨论】:

        猜你喜欢
        • 2021-12-01
        • 2020-07-09
        • 2012-10-26
        • 1970-01-01
        • 2019-01-05
        • 1970-01-01
        • 1970-01-01
        • 2018-04-14
        相关资源
        最近更新 更多