javascript - Loop over object's key/value using TypeScript / Angular2 -


this question has answer here:

how can iterate on object using typescript , being able access key , value?

my json object looks this:

{     "clients": {         "123abc": {             "forename": "simon",             "surname": "sample"         },         "456def": {             "forename": "charlie",             "surname": "brown"         }     } } 

the clients object filled made of client models looking like:

export class clientmodel {     id:string;     forename:string;     surname:string;      constructor(         private id:string,         private forename:string,         private surname:string     ) {         this.id = id;         this.forename = forename;         this.surname = surname;     } } 

given:

var = {     "clients": {         "123abc": {             "forename": "simon",             "surname": "sample"         },         "456def": {             "forename": "charlie",             "surname": "brown"         }     } };  class clientmodel {     constructor(         private id:string,         private forename:string,         private surname:string     ) {} } 

here how array of clientmodel objects:

var clientlist: clientmodel[] = object.getownpropertynames(a.clients)     .map((key: string) => new clientmodel(key, a.clients[key].forename, a.clients[key].surname)); 

...and here how map 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;     }, {}); 

after comment basarat , taking closer @ object.keys(), object.keys more appropriate use here object.getownpropertynames(). difference latter returns non-enumerable properties too. has no practical difference in particular case, should make intent of code more explicit. else remains same.