2013-03-24 167 views
0

我有一個被格式化爲遵循二維數組:改變陣列格式化

[["a",1], ["b",2]] 

我想其格式改成這樣:

{"a":1,"b":2} 

我怎樣才能做到這一點?對不起,如果這是一個容易/愚蠢的問題。

+3

哇,這個問題變成了 「誰可以張貼此代碼最快」! – Dave 2013-03-24 21:41:48

+0

哈哈哈我知道。免費業力! – 2013-03-24 21:44:44

回答

3

我會假設你確定相同的密鑰將不會出現兩次(即不會有與"a"兩個內部數組):

var inputArray = [["a",1], ["b",2]], 
    outputObject = {}, 
    i; 

for (i = 0; i < inputArray.length; i++) 
    outputObject[inputArray[i][0]] = inputArray[i][1]; 

如果這還不夠的jQuery你再我想你可以使用$.each()而不是for循環等,但在我看來,一個普通的for循環對於這種事情是很好的。

2
var arr = [["a",1], ["b",2]], obj = {}, i; 

for (i = 0; i < arr.length; i++) { 
    obj[arr[i][0]] = arr[i][1]; 
} 
2

這是相當容易的:

var myList = {}; 
for(var i in myArray) { 
    myList[myArray[i][0]] = myArray[i][1]; 
} 
2
var result = {}; 
$.each([["a",1], ["b", 2]], function(){result[this[0]] = this[1]}) 
2

可以通過多維數組迭代中,分配內陣列第一索引作爲屬性和第二作爲值。

var arr = [["a",1], ["b",2]]; 
var obj = {}; 

for(var i = 0; i < arr.length; i++){ 
    obj[arr[i][0]] = arr[i][1]; 
} 

工作實例http://jsfiddle.net/4Pmzx/

1

假設這個密鑰不會出現兩次:

var o = {}; 
[["a",1], ["b",2]].forEach(function(value) {o[value[0]] = value[1];});