2013-12-18 80 views
1

我有這樣對陣列(其中每對中的第一項僅僅是一個基本的索引):合併/替換JavaScript數組

a1 = [[0, 3910], [1, 4910], [2, 19401]] 

然後,我有號碼的第二陣列:

a2 = [1384559999, 1371254399, 1360799999] 

我需要做的是合併a1a2使得a2項目從a1替換每個parer的第一個對象。像這樣:

final = [[1384559999, 3910], [1371254399, 4910], [1360799999, 19401]] 
+1

你可以簡單地循環訪問數組。是否有更多的規則使得這種複雜化? –

+0

每個數組的第一個值是否應該是第二個數組中的值的索引?如果是這樣,它會有所作爲。 – brbcoding

回答

4

您可以使用Array.map做到這一點

a1 = [[0, 3910], [1, 4910], [2, 19401]] 
a2 = [1384559999, 1371254399, 1360799999] 

console.log(a2.map(function(current, index) { 
    return [current, a1[index][1]] 
})); 

輸出

[ [ 1384559999, 3910 ], 
    [ 1371254399, 4910 ], 
    [ 1360799999, 19401 ] ] 
0

只是因爲它是另一種解決辦法...

這假定您這意味着a1[i][0]是在a2中關聯值的dex。

var a1 = [[0, 3910], [1, 4910], [2, 19401]]; 
var a2 = [1384559999, 1371254399, 1360799999]; 
var a3 = []; 

for(var i = 0; i < a1.length; i++) { 
    tmp = [a2[a1[i][0]], a1[i][1]] 
    a3.push(tmp); 
} 

console.log(a3); 

// [ [ 1384559999, 3910 ], 
// [ 1371254399, 4910 ], 
// [ 1360799999, 19401 ] ] 

如果你改變了指數的值,例如這仍然有效...

var a1 = [[2, 3910], [1, 4910], [0, 19401]]; 

// Should be... 
// [ [ 1360799999, 3910 ], 
// [ 1371254399, 4910 ], 
// [ 1384559999, 19401 ] ] 

這裏的.map會是什麼樣子,如果每一對在A1的第一個值應該是a2中的值的索引。

var a1 = [[0, 3910], [1, 4910], [2, 19401]]; 
var a2 = [1384559999, 1371254399, 1360799999]; 

console.log(a1.map(function(current, index){ 
    return [ a2[current[0]], current[1] ]; 
})); 

//[ [ 1384559999, 3910 ], 
// [ 1371254399, 4910 ], 
// [ 1360799999, 19401 ] ]