2017-02-20 64 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});