[英]jQuery - merge two arrays with alteration
我试图找到最简单的方法将两个数组合并到第三个数组,使用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]);
}
method. 您可以使用jQuery.map()
方法直接创建数组。 返回数组时, jQuery.map
会执行.concat()
。
当长度不同时,这也将防止阵列中的孔。
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;
}
});
或者更简洁一点:
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;
});
如果你真的想让它简洁,你可以这样做:
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;
}
这样,您可以合并任意数量的数组,而无需担心单个数组的大小。
希望这也有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.