2011-10-12 85 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”}]

干杯!