我試着去找出兩個數組合併成第三個最簡單的方法,使用jQuery,像這樣: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]
我試着去找出兩個數組合併成第三個最簡單的方法,使用jQuery,像這樣: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]
您可以使用jQuery.map()
[docs]方法直接創建一個數組。當您返回陣列時,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);
});
@ 350D不客氣。 – user113716
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]);
}
如果'a.length> b.length'這會將'undefined's推入'result',我強烈懷疑這是所需的行爲。 –
這是未定義的行爲:) – arnaud576875
偉大的開始。謝謝!你能幫助不同長度的數組嗎? – 350D
另一種方法,使用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;
}
這樣,您就可以合併爲許多陣列ü希望,而不必擔心個別數組的大小。
希望這可以幫助。
它們會一直保持相同的長度嗎? – Trey
@Trey長度可以是任何 – 350D
一個數組中應該發生什麼比另一個長? – arnaud576875