jQuery-合并两个数组并进行更改

jQuery - merge two arrays with alteration

本文关键字:数组 两个 合并 jQuery-      更新时间:2023-09-26

我试图找到最简单的方法,用jQuery将两个数组合并到第三个数组中,如下所示:

[A,B,C,D]
[1,2,3,4]

答案是:

[A,1,B,2,C,3,D,4]

另一个例子:

[A,B,C] + [1,2,3,4,5] = [A,1,B,2,C,3,4,5]
[A,B,C,D] + [1,2,3] = [A,1,B,2,C,3,D]
var result = [];
var a = ['A','B','C','D'];
var b = [1,2,3,4];
$.each(a, function (index, value) {
    result.push(value);
    result.push(b[index]);
});

请在此处尝试:http://jsfiddle.net/GcTx7/3/

没有jQuery:

for (var i = 0, l = a.length; i < l; ++i) {
    result.push(a[i], b[i]);
}

这一个处理了两个阵列长度不相同的情况:

for (var i = 0, l = Math.max(a.length, b.length); i < l; ++i) {
    if (i < a.length) result.push(a[i]);
    if (i < b.length) result.push(b[i]);
}

http://jsfiddle.net/GcTx7/1/

您可以使用jQuery.map()[docs]方法直接创建数组。返回Array时,jQuery.map执行.concat()

当长度不同时,这也将防止阵列中出现孔洞。

http://jsfiddle.net/zbCj7/

var chars = ['A','B','C','D'];
var nums = [1,2,3,4];
var res = $.map( chars.length > nums.length ? chars : nums, function(v,i) {
    var chr = chars[i];
    var num = nums[i];
    if( chr !== undefined && num !== undefined ) {
        return [chr,num];
    } else if( chr === undefined ) {
        return num;
    } else {
        return chr;
    }
});

或者更简洁一点:

http://jsfiddle.net/zbCj7/1/

var chars = ['A','B','C','D'];
var nums = [1,2];
var res = $.map( chars.length > nums.length ? chars : nums, function(v,i) {
    var chr = chars[i];
    var num = nums[i];
    return ( chr !== undefined && num !== undefined ) ?
        [chr,num] : ( chr === undefined ) ? num : chr;
});

如果你真的想让它简洁,你可以这样做:

http://jsfiddle.net/zbCj7/2/

var chars = ['A','B','C','D'];
var nums = [1,2];
var res = $.map( chars.length > nums.length ? chars : nums, function(v,i) {
    return [ chars[i], nums[i] ].slice( chars[i]===undefined,
                                        nums[i]===undefined || 2 );
});

使用jquery的另一种方法是:

var a = [1,2,3,4];
var b = ['a','b','c'];
var merged_array = mergeArray([a,b]);
function mergeArrays(arrayOfArray) {
    var result = []; 
    for (var i = 0; i < arrayOfArray.length;i++ ) {
        $.merge(result, arrayOfArray[i]);
    }
    return result;
}

通过这种方式,您可以合并任意数量的数组,而不必担心单个数组的大小。

希望这也能帮上忙。