2017-12-28 10 views
0

Ich habe mich gefragt, wie der beste/effizienteste Weg wäre, um fünf verschiedenen Instanzen der gleichen Datenstruktur mehrere Werte zuzuweisen (alle Datenstrukturen sind gleich).Mehrere Werte mehreren Datenstrukturen zuweisen

Meine Daten Struktur:

export class WeatherData { 
    date: string; 
    city: string; 
    country: string; 
    temperature: number; 
    minTemperature: number; 
    maxTemperature: number; 
    weather: any; 
    weatherIcon: any; 
} 

So zum Beispiel, meine Werte für minTemperature sind derzeit in einer Reihe Array mit einer Länge von 5, die die Mindesttemperatur für jeden Tag enthält. Mit anderen Worten, jede Instanz der Datenstruktur repräsentiert einen Tag.

Gibt es eine Möglichkeit für mich, das i-te Element dieses Arrays der minTemperatur der i-ten Datenstruktur zuzuordnen? Dies muss auch für die anderen Felder der Datenstruktur (Datum, Stadt, Land, ...) erledigt werden.

+0

Das sieht für mich wie Typoskript. Wenn es so ist, editiere bitte deinen Beitrag, um es zu sagen. –

+0

hat es geändert. Dort würde es keinen Unterschied geben, wenn es sich um TypeScript oder JavaScript handeln würde. –

+0

Willst du eine 'neue WeatherData()' für jedes dieser 5 Elemente? – charlietfl

Antwort

0

Ich gebe Ihnen zwei Antworten, da die Intuition sagt, dass Sie wahrscheinlich besser mit einem geeignet sind Schnittstelle in diesem Fall:

Mit der gegebenen Klasse:

export class WeatherData { 
 
    date: string; 
 
    city: string; 
 
    country: string; 
 
    temperature: number; 
 
    minTemperature: number; 
 
    maxTemperature: number; 
 
    weather: any; 
 
    weatherIcon: any; 
 
    // set up a constructor: 
 
    constructor(props?: Partial<WeatherData>) { 
 
     // take an optional object containing properties of weather data and assign it 
 
     Object.assign(this, props); 
 
    } 
 
} 
 

 
// Setup for clarity sake 
 
const temperatures[] = //.... 
 
const countries[] = //.... 
 
// more arrays as given... 
 

 
let weatherDataObjects: WeatherData[] = []; 
 
// Assuming these arrays are all the same length: 
 
for (let i = 0; i < temperatures.length; i++) { 
 
    weatherDataObjects.push(new WeatherData({ 
 
    temperature: temperatures[i], 
 
    country: countries[i], 
 
    // ... assign the rest 
 
    })); 
 
}

jedoch, wie bereits erwähnt, wenn Sie nicht vorhaben, jedes Mitglied auf, die Methoden zu Ihrer WeatherData-Klasse wird Ihnen wahrscheinlich eine Schnittstelle besser passen - im Wesentlichen ein eingeschränktes, typgeprüftes Objekt. Mit einer Schnittstelle:

interface WeatherData { 
 
    date: string; 
 
    city: string; 
 
    country: string; 
 
    temperature: number; 
 
    minTemperature: number; 
 
    maxTemperature: number; 
 
    weather: any; 
 
    weatherIcon: any; 
 
} 
 

 
// Setup for clarity sake 
 
const temperatures[] = //.... 
 
const countries[] = //.... 
 
// more arrays as given... 
 

 
let weatherDataObjects: WeatherData[] = []; 
 
// Assuming these arrays are all the same length: 
 
for (let i = 0; i < temperatures.length; i++) { 
 
    weatherDataObjects.push({ 
 
    temperature: temperatures[i], 
 
    country: countries[i], 
 
    // ... assign the rest 
 
    }); 
 
}

+0

Ich bin kein Typoskript-Guru, aber Sie scheinen nicht die tatsächliche Schnittstelle zu verwenden – charlietfl

+0

@charlietfl guten Fang, behoben. Vielen Dank! –

Verwandte Themen