2017-02-20 122 views
-1

我有這個objet: keyValue:{key:string,value:number} [];TypeScript/JavaScript數組值推送

我想一個新的元素,從兩個值添加到這個陣列,像這樣:

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

我試過多種語法,也看到了: How can I add a key/value pair to a JavaScript object?

但我看不出有任何關鍵創建一個新的對象。 陣列的使用讓我的 error

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

回答

3

你應該推的object literal你的陣列

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

還需要初始化數組:'讓tmpTabKV:{鍵:字符串,值:數} [] = [];' –

+0

@AJRichardson感謝。 – Jamiec

0

根據let tmpTabKV : { key : string , value : number}[];只是做:

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

但我想你想要這個:

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

+0

不,這與他的'{key:string,value:number}接口不匹配' –

+0

您真的可以使用數組文字作爲對象中的鍵嗎? – Jamiec

+0

我知道,但我認爲這是他想要的,他的界面是錯誤的。這就是爲什麼我先說'根據他的界面'。 –

-1

你應該推對象:我注意到

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

let tmpTabKV: KeyValuePair[]; 

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

你不需要'new'關鍵字 –

+0

^^「不需要」=>「不能有」:-) –

0

的幾個問題:第一,你推一個新的對象數組,如果它是一個本身陣列。也就是說,你依靠值的位置來映射到鍵的位置。在一個對象中,鍵總是無序的,因此必須始終指定。

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

什麼你與{project.libelle, startKV.value}做正在與shorthand syntax的對象,這不會在您的示例工作。

在打字稿中,如果要限制對象中的鍵,請實現一個界面。

interface KeyValue { key: string, value: number } 

let tmpTabKV: KeyValue[]; 

// ... 

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