Given:
var a = {
"clients": {
"123abc": {
"Forename": "Simon",
"Surname": "Sample"
},
"456def": {
"Forename": "Charlie",
"Surname": "Brown"
}
}
};
class ClientModel {
constructor(
private id:string,
private forename:string,
private surname:string
) {}
}
这是获取数组的方法ClientModel
对象:
var clientList: ClientModel[] = Object.getOwnPropertyNames(a.clients)
.map((key: string) => new ClientModel(key, a.clients[key].Forename, a.clients[key].Surname));
...以及如何从中获取地图string
(id) 至ClientModel
:
var clientMap: { [key: string]: ClientModel } = Object.getOwnPropertyNames(a.clients)
.reduce((map: any, key: string) => {
map[key] = new ClientModel(key, a.clients[key].Forename, a.clients[key].Surname);
return map;
}, {});
在 basarat 发表评论并仔细查看之后Object.keys()
, Object.keys
在这里使用比Object.getOwnPropertyNames()
。不同之处在于后者也返回不可枚举的属性。在这种特殊情况下,它没有实际差异,但应该使代码的意图更加明确。其他一切都保持不变。