So, I have two classes
Item { name: string; desc: string; meta: string}
ViewItem { name: string; desc: string; hidden: boolean; }
I have an array of Item that needs to be converted into an array of ViewItem. Currently, I am looping through the array using for, instantiating ViewItem, assigning values to attributes and pushing it to the second array.
Is there a simple way to achieve this using lambda expressions? (similar to C#) Or is there any other means?
You haven't showed enough of your code, so I'm not sure how you instantiate your classes, but in any case you can use the array map function:
class Item {
name: string;
desc: string;
meta: string
}
class ViewItem {
name: string;
desc: string;
hidden: boolean;
constructor(item: Item) {
this.name = item.name;
this.desc = item.desc;
this.hidden = false;
}
}
let arr1: Item[];
let arr2 = arr1.map(item => new ViewItem(item));
This can be shorter with Object.assign
:
constructor(item: Item) {
Object.assign(this, item);
}