2017-02-20 6 views
-1

Ich habe dieses Objekt: keyValue: {key: string, value: number} [];TypeScript/JavaScript Array-Wert push

Ich möchte aus zwei Werten ein neues Element in diesem Array hinzuzufügen, wie folgt aus:

let tmpTabKV : { key : string , value : number}[]; 
[...] 
tmpTabKV.push({projet.libelle, statKV.value}); 
[...] 
keyValue = tmpTabKV; 

ich mehrere Syntaxen und gesehen das versucht: How can I add a key/value pair to a JavaScript object?

Aber ich sehe keinen Schlüssel um ein neues Objekt zu erstellen. Die Verwendung eines Arrays macht mich ein error

tmpTabKV.push(Array(projet.libelle, statKV.value)); 

Antwort

3

Sie sollten

let tmpTabKV : { key : string , value : number}[] = [] 
tmpTabKV.push({key:projet.libelle, value:statKV.value}); 
+0

Sie müssen auch das Array initialisieren: 'lassen tmpTabKV: {key: String, value: Nummer} [] = [];' –

+0

@AJRichardson Dank. – Jamiec

0

Nach let tmpTabKV : { key : string , value : number}[]; ein object literal zu Ihrem Array drängen gerade tun:

tmpTabKV.push({key: project.libelle, value: statKV.value})

aber Ich denke du willst das:

tmpTabKV.push({[project.libelle]: statKV.value})

+0

Nein, das passt nicht zu seiner Schnittstelle von '{key: string, value: number}' –

+0

Können Sie tatsächlich ein Array-Literal als Schlüssel in einem Objekt verwenden? – Jamiec

+0

Ich weiß, aber ich denke, das ist was er will, und seine Schnittstelle ist falsch. Deshalb sage ich zuerst "nach seiner Schnittstelle". –

-1

sollten Sie einen neue Objekt schieben:

interface KeyValuePair{ 
    key: string: 
    value: number; 
} 

let tmpTabKV: KeyValuePair[]; 

tmpTabKV.push(new {key: projet.libelle, value: statKV.value}); 
+1

Sie brauchen das 'neue' Schlüsselwort nicht –

+0

^^" nicht brauchen "=>" kann nicht dort haben ":-) –

0

Ein paar Probleme, die ich bemerkt habe: Erstens, sind Sie auf dem Array ein neues Objekt schieben, als ob es sich ein Array. Das heißt, Sie verlassen sich auf die Position der Werte, um der Position der Schlüssel zuzuordnen. In einem Objekt sind die Schlüssel immer ungeordnet und müssen daher immer angegeben werden.

tmpTabKV.push({key: project.libelle, value: statKV.value}) 

Was Sie mit {project.libelle, startKV.value} tun ein Objekt mit shorthand syntax macht, die nicht in Ihrem Beispiel funktionieren würde.

Wenn Sie die Schlüssel in einem Objekt einschränken möchten, implementieren Sie in Typoskript eine Schnittstelle.

interface KeyValue { key: string, value: number } 

let tmpTabKV: KeyValue[]; 

// ... 

tmpTabKV.push({key: project.libelle, value: number}); 
Verwandte Themen