2012-11-28 135 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; 
    }); 
}); 
  • 慢,不易阅读。不使用。