I have a list of raw data like following mockData and need to generate to a object[] format, some key-value pair are required from raw data like first, last, state. but some key-value pair are option like nickname. Eventually, I need to build a object array with some same key-value like raw data, and some key's value depends on another key's value like fullname, address. If there is a better way for me to do it and make it more dynamically? because I will have more than 20 different key-value set like fullname, address that need to be built by some function related on raw data
export const mockData: Human[] = [
{
first: 'name1',
last: 'v1',
state: 'ny',
},
{
first: 'name2',
last: 'v2',
state: 'pa',
nickname: 'rocketman',
}]
export interface Human {
first: string;
last: string;
state: string;
nickname?: string;
}
export interface Student extends Human{
fullname: string;
address: string;
}
function setFullName(first: string, last: string): string {
return `${first} ${last}`
}
function setAddress(first: string, last: string, state: string): string {
return `${first} ${last} live a ${state}`
}
function buildStudentData(jsons: Human[]): Student[] {
return jsons.map((json) => <Student> {
first: json.first,
last: json.last,
nickname: json.hasOwnProperty('nickname') ? json.nickname : json.first,
fullname: setFullName(json.first, json.last),
address: setAddress(json.first, json.last, json.state)})
}
console.log(buildStudentData(mockData));