2016-11-30 12 views
6

तो करने के लिए एक प्रकार की वस्तुओं की एक सरणी परिवर्तित करने के लिए एक आसान तरीका है, मैं दो वर्गोंटाइपप्रति: एक और

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

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

मैं आइटम की एक सरणी ViewItem की एक सरणी में परिवर्तित करने की आवश्यकता है कि राशि है । वर्तमान में, मैं एरे के माध्यम से लूपिंग कर रहा हूं, ViewItem को तुरंत चालू कर रहा हूं, गुणों को मान निर्दिष्ट कर रहा हूं और इसे दूसरी सरणी में दबा रहा हूं।

क्या लैम्ब्डा अभिव्यक्तियों का उपयोग करके इसे प्राप्त करने का कोई आसान तरीका है? (सी # के समान) या क्या कोई अन्य साधन है?

उत्तर

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; 
    } 
} 

उपयोग:

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

Playground link

संबंधित मुद्दे