使用jQuery合并两个数组并创建第三个数组

6
我有两个数组,分别是arr1=[A,B,C,D]arr2=[a,b,c,d]。我想要创建第三个数组,通过以下方式将这两个数组合并:
arr3= [A,a,B,b,C,c,D,d]; 

如何使用jquery实现这个功能?请帮忙!

1
请明确定义您在最终数组中如何排序元素。按字母顺序排列,还是您只是想在 arr1 和 arr2 之间交替? - Blazemonger
只想在 arr1 和 arr2 之间交替。以问题中所示的确切方式。 - user3641092
6个回答

20

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

var arr3 = $.merge( arr1, arr2 )

演示

根据您所需的格式,

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

演示 I


1
这不会按照问题中显示的顺序排列。 - gen_Eric
3
请注意,根据文档,此操作将改变arr1的值。 - Blazemonger
@RocketHazmat 是的,没错。但是楼主只是问如何合并两个数组。 - Rajaprabhu Aravindasamy
他确实要求按照特定格式进行。 - gen_Eric
1
@RocketHazmat已回答。 :) - Rajaprabhu Aravindasamy

2
如果你只想在两个数组之间交替元素,并且它们的长度始终相等:
arr3 = [];
for (var i=0,j=arr1.length; i<j; i++) {
    arr3.push(arr1[i]);
    arr3.push(arr2[i]);
}

1
使用merge函数可以在一个字符串中完成。合并后的数组将返回,而不会改变合并的数组:
var arr3 = $.merge($.merge([], arr1), arr2);

0

0
这将交错两个任意长度的数组,并返回结果。不需要使用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()

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接