我有2个数组,比如说arr1=[A,B,C,D];
和arr2 = [a,b,c,d];
我想通过以下方式组合这两个来创建第三个数组:
arr3= [A,a,B,b,C,c,D,d];
如何使用jquery实现这一目标?请帮忙!
答案 0 :(得分:7)
尝试使用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);
答案 1 :(得分:2)
如果您只想在两个数组之间交替使用元素,并且它们的长度始终相等:
arr3 = [];
for (var i=0,j=arr1.length; i<j; i++) {
arr3.push(arr1[i]);
arr3.push(arr2[i]);
}
答案 2 :(得分: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()
答案 3 :(得分:0)
可以使用merge
函数以一个字符串完成此操作。
新数组将返回,而不会更改合并数组:
var arr3 = $.merge($.merge([], arr1), arr2);
答案 4 :(得分:0)
您可以将$ .merge函数用作
$(document).ready(function(){
var arr1=['a','b'];
var arr2=['c','d'];
console.log($.merge(arr1,arr2));
});
答案 5 :(得分: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)));