2016-04-07 193 views
-1

這是我的代碼如何將對象轉換爲AngularJs中的對象數組?

"type":{"0": 
     { "label":"name", 
    "required":false, 
    "type":"String", 
    }, 
    "1": 
     { "label":"email", 
    "required":false, 
    "type":"String", 
    } 
    } 

在上面的代碼我有Type對象包含兩個嵌套的對象。現在我想使用angularjs將該對象轉換爲以下格式的對象數組。

輸出應該是這樣的: -

"type":[ 
     { "label":"name", 
    "required":false, 
    "type":"String", 
    }, 
     { "label":"email", 
    "required":false, 
    "type":"String", 
    } 
    ] 
+0

http://stackoverflow.com/questions/208016/how-to-list-the-properties-of-a-javascript-object – naneri

+0

http://stackoverflow.com/questions/6857468/a-better-way -to-convert-js-object-to-array – Avinash

回答

1

像這樣的事情吧?

var arr = []; 
 
Object.keys(obj).forEach(function(key) 
 
{ 
 
    arr.push(obj[key]); 
 
}); 
 
obj = { type: arr };

+0

你錯過了輸出應該是'{type:[...]}' – davidkonrad

+0

你是正確的,已更新。 –

+0

謝謝@Tom Mettam.Its工作 –

1

您可以使用鍵作爲數組的索引。

var object = { "type": { "0": { "label": "name", "required": false, "type": "String", }, "1": { "label": "email", "required": false, "type": "String", } } }, 
 
    array = []; 
 

 
Object.keys(object.type).map(function (k) { 
 
    array[+k] = object.type[k]; 
 
}); 
 
object.type = array; 
 
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');

+1

你錯過了,輸出應該是'{type:[...]}' – davidkonrad

+0

@davidkonrad,是的,請參閱編輯。 –

0

說你有

var obj = {"type":{"0": 
     { "label":"name", 
    "required":false, 
    "type":"String", 
    }, 
    "1": 
     { "label":"email", 
    "required":false, 
    "type":"String", 
    } 
    }} 

你可以做

var arr = []; 
for(var key in obj.type){ 
    arr.push(obj.type[key]) 
} 
obj.type = arr; 
+0

你錯過了輸出應該是'{type:[...]}' – davidkonrad

+0

你,這就是爲什麼我寫了'obj.type = arr;'這將取代舊的對象與數組 –

0

你應該使用這樣做Object.keys

objsArray = []; 
Object.keys(objs).forEach(function(key) 
{ 
    objsArray.push(objs[key]); 
}); 
+0

你也錯過了,輸出應該是'{type:[...]}' – davidkonrad

0

比方說,你的目標是:

var myObj = "type":{"0": 
     { "label":"name", 
    "required":false, 
    "type":"String", 
    }, 
    "1": 
     { "label":"email", 
    "required":false, 
    "type":"String", 
    } 
    }; 

如果您使用Lodash庫:

myObj.type = _.map(myObj.type) 
0

對於入黨的緣故 - 遲到總比不到好。使用函數式編程來處理數組非常有趣,而且接受的答案很好,但是稍微調整了一下,你就會得到更清晰的代碼。

obj = { type: Object.keys(obj).map(function(key) { return obj[key]; }) }; 

,或者使用更清潔更sucinct ES6 STEEZ

obj = { type: Object.keys(obj).map(key => obj[key]) }; 

超級乾淨!

相關問題