您可以使用jQuery.map()[docs] 方法直接创建一个数组。当您返回一个数组时,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 );
});