2011-08-03 159 views
5

是否有我可以用來完成這個的共同的Javascript/Coffeescript特定成語?主要是出於好奇。將兩個數組(鍵和值)合併到一個對象中

我有兩個數組,其中一個由所需的鍵組成,另一個由所需值組成,我想將它合併到一個對象中。

keys = ['one', 'two', 'three'] 
values = ['a', 'b', 'c'] 
+1

JavaScript沒有關聯數組。對象成員可以用類似數組的語法來訪問,但它們仍然是對象。 –

+1

@nikc:謝謝,我意識到這一點。但考慮到上下文,我覺得'聯想陣列'會用更少的話來傳達我所要做的。 –

+0

@Jorge - 把它叫做一個對象,'因爲這是JavaScript所具有的。少輸入太多。 ;-) – RobG

回答

12
var r = {}, 
    i, 
    keys = ['one', 'two', 'three'], 
    values = ['a', 'b', 'c']; 

for (i = 0; i < keys.length; i++) { 
    r[keys[i]] = values[i]; 
} 
+0

很好的答案,但有沒有辦法保持重複? – rashadb

+0

@rashadb編號對象不能有重複的鍵。 – jhpratt

3

只要兩個數組的長度相同,你可以這樣做:

var hash = {}; 
var keys = ['one', 'two', 'three'] 
var values = ['a', 'b', 'c'] 

for (var i = 0; i < keys.length; i++) 
    hash[keys[i]] = values[i]; 

console.log(hash['one']) 
console.log(hash.two); 
+0

很好的答案,但有沒有辦法保持重複? – rashadb

+0

@rashadb編號對象不能有重複的鍵。 – jhpratt

6
keys = ['one', 'two', 'three'] 
values = ['a', 'b', 'c'] 

d = {} 

for i, index in keys 
    d[i] = values[index] 

說明: 在CoffeeScript中,你可以遍歷數組,並得到每個項目以及它在數組或索引上的位置。 因此,您可以使用此索引將鍵和值分配給新對象。

+1

這是我最終做的(儘管在你回答之前)。不過,+1爲你:) –

相關問題