2016-11-30 50 views
6

因此,一個簡單的辦法,我有兩個類打字稿:有沒有一種類型的對象的數組轉換爲另一種

Item { name: string; desc: string; meta: string} 

ViewItem { name: string; desc: string; hidden: boolean; } 

我有項目的數組需要轉換成ViewItem數組。 目前,我正在循環訪問數組,使用for,實例化ViewItem,爲屬性賦值並將其推送到第二個數組。

有沒有簡單的方法來實現這個使用lambda表達式? (類似於C#) 或者還有其他方法嗎?

回答

10

您還沒有表現出了足夠的代碼,所以我不知道你如何實例化你的類,但在任何情況下,你可以使用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)); 

code in playground

+0

非常感謝Nitzan –

0

另一種方法是使用Object.keys

class Item { 
    name: string; 
    desc: string; 
    meta: string 
} 

class ViewItem { 
    name: string; 
    desc: string; 
    hidden: boolean; 

    // additional properties 
    additionalProp: boolean; 

    constructor(item: Item) { 
     Object.keys(item).forEach((prop) => { this[prop] = item[prop]; }); 

     // additional properties specific to this class 
     this.additionalProp = false; 
    } 
} 

用法:

let arr1: Item[] = [ 
    { 
     name: "John Doe", 
     desc: "blah", 
     meta: "blah blah" 
    } 
]; 
let arr2: ViewItem[] = arr1.map(item => new ViewItem(item)); 

Playground link

相關問題