2012-11-28 101 views
1
obj = {'a':['hello', 'hie'], 'b':['World', 'India']} 

轉換對象Array對數組對象:使用Javascript

array = [{'a':'hello','b':'World'}, {'a':'hie','b':'India'}] 

最好的方式轉換成這個或任何內置的方法使用JQuery這種轉換。

+9

*「使用JQuery將此轉換或任何內置方法轉換爲此轉換的最佳方式」。*編寫循環遍歷對象屬性並構建結果的代碼。沒有捷徑。 –

+0

你的映射沒有很好的定義。請再舉幾個例子和/或詳細說明。 –

+1

jQuery現在被稱爲Web開發的通用瑞士軍刀... :-) – PhiLho

回答

2

試試這個代碼,

obj = {'a':['hello', 'hie'], 'b':['World', 'India']} 
var key = Object.keys(obj); 
array = []; 
for (var i = 0; i < obj['a'].length; i++){ 
    o = {} 
    for (k in key){ 
    o[key[k]] = obj[key[k]][i] 
    } 
    array.push(o) 
} 
+1

不要對'key'數組使用for-in-loop。另外,一些分號會很好。 – Bergi

1
var obj = {'a':['hello', 'hie'], 'b':['World', 'India']}; 

var array = []; 
for (var prop in obj) 
    for (var i=0; i<obj[prop].length; i++) { 
     var o = array[i] || (array[i] = {}); 
     o[prop] = obj[prop][i]; 
    } 

沒有jQuery的需要。使用jQuery,它可能是這樣的:

var array = []; 
$.each(obj, function(prop) { 
    $.each(this, function(i) { 
     var o = array[i] || (array[i] = {}); 
     o[prop] = this; 
    }); 
}); 
  • 慢,不易閱讀。不使用。