【问题标题】:combine two arrays and create a third array using jquery组合两个数组并使用 jquery 创建第三个数组
【发布时间】:2014-05-15 13:55:12
【问题描述】:

我有 2 个数组,比如 arr1=[A,B,C,D];
和 arr2=[a,b,c,d]; 我想通过以下方式组合这两个来创建第三个数组:

arr3= [A,a,B,b,C,c,D,d]; 

如何使用 jquery 实现这一点?请帮忙!

【问题讨论】:

  • 准确定义最终数组中元素的排序方式。按字母顺序排列,还是只想在 arr1 和 arr2 之间交替?
  • 只想在 arr1 和 arr2 之间交替。与问题中显示的完全相同。

标签: jquery


【解决方案1】:

尝试使用jquery的$.merge(array1,array2)函数,

var arr3 = $.merge( arr1, arr2 )

DEMO

对于您询问的格式,

var arr1=['A','B','C','D'];
var arr2=['a','b','c','d'];

var arr3 = [];

for(var i=0,len=arr1.length;i<len;i++){
    arr3[arr3.length] = arr1[i];
    arr3[arr3.length] = arr2[i];
}

alert(arr3);

DEMO I

【讨论】:

  • 这不会按问题中显示的顺序排列。
  • 请注意,根据文档,arr1 将被此操作更改。
  • @RocketHazmat 是的,这是真的。但 op 只是问如何组合两个数组。
  • 确实要求它采用某种格式。
  • @RocketHazmat 回答了。 :)
【解决方案2】:

如果您只想在两个数组之间交替元素,并且它们的长度始终相等:

arr3 = [];
for (var i=0,j=arr1.length; i<j; i++) {
    arr3.push(arr1[i]);
    arr3.push(arr2[i]);
}

【讨论】:

    【解决方案3】:

    这将交错两个任意长度的数组,并返回结果。不需要 jquery。

    function interleave(a,b) {
        c=[];
        tot=a.length+b.length;
        while (c.length<tot) {
            if (aa=a.shift()) {
                c.push(aa);
            }
            if (bb=b.shift()) {
                c.push(bb);
            }
        }
        return c;
    }
    

    如果你想合并两个数组并按字母顺序排序,试试这个(也不要 jquery)

    arr3=arr1.concat(arr2).sort()
    

    【讨论】:

      【解决方案4】:

      可以使用merge函数在一个字符串中完成。 新数组将在不改变合并数组的情况下返回:

      var arr3 = $.merge($.merge([], arr1), arr2);
      

      【讨论】:

        【解决方案5】:

        你可以使用 $.merge 函数作为

        $(document).ready(function(){
          var arr1=['a','b'];
          var arr2=['c','d'];
          console.log($.merge(arr1,arr2));  
        });
        

        http://jsfiddle.net/xpvt214o/850274/

        【讨论】:

          【解决方案6】:

          您可以使用下面的递归函数交错两个数组。无论数组的长度是否相同,此方法都可以使用:

          var z = (a, b) => a.length ? [a[0], ...z(b, a.slice(1))] : b;
          
          var arr1 = ["A", "B", "C", "D"];
          var arr2 = ["a", "b", "c", "d"];
          
          var arr3 = z(arr1, arr2);
          console.log(JSON.stringify(arr3));

          或者对于任意数量的数组,使用这个:

          var z = (a = [], ...b) => 
              b.length ? a.length ? [a[0], ...z(...b, a.slice(1))] : z(...b) : a;
          
          var array1 = [1, 2];
          var array2 = '♦♡♣♤♥♢';
          var array3 = ['A', 'B', 'C'];
          var array4 = ['?', '?', '?'];
          var array5 = [null, NaN, undefined];
          
          var stringify = (o) => JSON.stringify(o, (k, v) => v === undefined ? '__undefined__' : v !== v ? '__NaN__' : v).replace(/"__undefined__"/g, 'undefined').replace(/"__NaN__"/g, 'NaN');
          
          console.log(stringify(z()));
          console.log(stringify(z(array1)));
          console.log(stringify(z(array1, array2)));
          console.log(stringify(z(array1, array2, array3)));
          console.log(stringify(z(array1, array2, array3, array4)));
          console.log(stringify(z(array1, array2, array3, array4, array5)));

          【讨论】:

            猜你喜欢
            • 2016-04-28
            • 2021-07-14
            • 1970-01-01
            • 2016-02-09
            • 1970-01-01
            • 1970-01-01
            • 2022-01-16
            • 1970-01-01
            • 2012-03-31
            相关资源
            最近更新 更多