2011-10-12 86 views
3

我有兩個JavaScript數組,它們的條目數量相同,但數字可能有所不同。如何組合這兩個JavaScript數組

[{"branchids":"5006"},{"branchids":"5007"},{"branchids":"5009"}]  
[{"branchnames":"GrooveToyota"},{"branchnames":"GrooveSubaru"},{"branchnames":"GrooveFord"}] 

我想這兩個陣列組合,使我得到

[{"5006":"GrooveToyota"},{"5007":"GrooveSubaru"},{"5008":"GrooveFord"}] 

我不知道如何把它變成文字,但希望有人理解。我想用兩個任意長度的數組(儘管長度相同)來完成此操作。

任何提示讚賞。

+0

他們保證在同一個順序? –

+0

對不起,我剛剛編輯它是一個錯字。 –

+0

呃,在你的例子中他們都是'5006',這使得它更容易:( –

回答

3
var ids = [{"branchids":"5006"},{"branchids":"5007"},{"branchids":"5009"}]; 
var names = [{"branchnames":"GrooveToyota"},{"branchnames":"GrooveSubaru"},{"branchnames":"GrooveFord"}]; 
var combined = []; 

for (var i = 0; i < ids.length; i++) { 
    var combinedObject = {}; 
    combinedObject[ids[i].branchids] = names[i].branchnames; 
    combined.push(combinedObject); 
} 

combined; // [{"5006":"GrooveToyota"},{"5006":"GrooveSubaru"},{"5006":"GrooveFord"}] 
6

這是怎樣的一個拉鍊的:

function zip(a, b) { 
    var len = Math.min(a.length, b.length), 
     zipped = [], 
     i, obj; 
    for (i = 0; i < len; i++) { 
     obj= {}; 
     obj[a[i].branchids] = b[i].branchnames; 
     zipped.push(obj); 
    } 
    return zipped; 
} 

Example (uses console.log ie users)

+0

你的意思是'我'而不是[0]在底部第四行? –

+0

是的,這是一個輸入錯誤 – Joe

+1

使用[0]將無法正常工作,因爲它每次都會得到GrooveToyota和5006。 jsfiddle.net/K5Mur/ – robert

0

就個人而言,我會做IAbstractDownvoteFactor的方式(+1),但對於另一種選擇,我提出對您的編碼以下高興:

var a = [{"branchids":"5006"},{"branchids":"5007"},{"branchids":"5009"}]; 
var b = [{"branchnames":"GrooveToyota"},{"branchnames":"GrooveSubaru"},{"branchnames":"GrooveFord"}]; 
var zipped = a.map(function(o,i){ var n={};n[o.branchids]=b[i].branchnames;return n;}); 
0

類似於@robert解決方案,但使用Array.pro totype.map

var ids = [{「branchids」:「5006」},{「branchids」:「5007」},{「branchids」:「5009」}], names = [{「branchnames」 :「GrooveToyota」},{「branchnames」:「GrooveSubaru」},{「branchnames」:「GrooveFord」}], merged = ids.map(function(o,i){var obj = {}; OBJ [o.branchids] =名[I] .branchnames;返回obj; });

合併; // [{5006:「GrooveToyota」},{5006:「GrooveSubaru」},{5006:「GrooveFord」}]

乾杯!