TypeScript/JavaScript数组值推送

TypeScript/JavaScript数组值推送,javascript,arrays,typescript,Javascript,Arrays,Typescript,我有一个目标: keyValue:{key:string,value:number}[] 我想从两个值向该数组添加一个新元素,如下所示: let tmpTabKV : { key : string , value : number}[]; [...] tmpTabKV.push({projet.libelle, statKV.value}); [...] keyValue = tmpTabKV; 我尝试了多种语法,看到了: 但我没有看到任何创建新对象的键。 数组的使用使我成为一个

我有一个目标: keyValue:{key:string,value:number}[]

我想从两个值向该数组添加一个新元素,如下所示:

 let tmpTabKV : { key : string , value : number}[];
 [...]
 tmpTabKV.push({projet.libelle, statKV.value});
 [...]
 keyValue  = tmpTabKV;
我尝试了多种语法,看到了:

但我没有看到任何创建新对象的键。 数组的使用使我成为一个

您应该将一个

let tmpTabKV : { key : string , value : number}[] = []
tmpTabKV.push({key:projet.libelle, value:statKV.value});
您应该将一个

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

根据
让tmpTabKV:{key:string,value:number}[]只需执行以下操作:

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

但我想你想要这个:


tmpTabKV.push({[project.libelle]:statKV.value})
根据
让tmpTabKV:{key:string,value:number}[]只需执行以下操作:

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

但我想你想要这个:


tmpTabKV.push({[project.libelle]:statKV.value})
您应该推送一个新的对象:

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

let tmpTabKV: KeyValuePair[];

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

您应该推送一个新的对象:

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

let tmpTabKV: KeyValuePair[];

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

我注意到了几个问题:首先,您将一个新对象推送到数组中,就好像它本身就是一个数组一样。也就是说,您依赖于值的位置来映射到关键点的位置。在对象中,键总是无序的,因此必须始终指定

tmpTabKV.push({key: project.libelle, value: statKV.value})
您使用
{project.libelle,startKV.value}
创建的对象在您的示例中不起作用

在typescript中,如果要限制对象中的键,请实现一个接口

interface KeyValue { key: string, value: number }

let tmpTabKV: KeyValue[];

// ...

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

我注意到了几个问题:首先,您将一个新对象推送到数组中,就好像它本身就是一个数组一样。也就是说,您依赖于值的位置来映射到关键点的位置。在对象中,键总是无序的,因此必须始终指定

tmpTabKV.push({key: project.libelle, value: statKV.value})
您使用
{project.libelle,startKV.value}
创建的对象在您的示例中不起作用

在typescript中,如果要限制对象中的键,请实现一个接口

interface KeyValue { key: string, value: number }

let tmpTabKV: KeyValue[];

// ...

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

不,这与他的接口不匹配,
{key:string,value:number}
你真的可以使用数组文本作为对象中的键吗?我知道,但我认为这是他想要的,他的接口是错误的。这就是为什么我首先说‘根据他的接口’。@Jamiec:它不是数组文字,而是计算出的属性名。是的,从ES2015(也称为“ES6”)开始,您可以。它将取
project.libelle
的值,并将其用作属性名。例如:
let x=“answer”;设o={[x]:42};console.log(o.answer);//42
@SteevePitis啊,这是一个很好的观点。在这种情况下,他应该将接口更改为
let tmpTabKV:{[key:string]:number}={}不,这与他的接口不匹配,
{key:string,value:number}
你真的可以使用数组文本作为对象中的键吗?我知道,但我认为这是他想要的,他的接口是错误的。这就是为什么我首先说‘根据他的接口’。@Jamiec:它不是数组文字,而是计算出的属性名。是的,从ES2015(也称为“ES6”)开始,您可以。它将取
project.libelle
的值,并将其用作属性名。例如:
let x=“answer”;设o={[x]:42};console.log(o.answer);//42
@SteevePitis啊,这是一个很好的观点。在这种情况下,他应该将接口更改为
let tmpTabKV:{[key:string]:number}={}
您还需要初始化数组:
让tmpTabKV:{key:string,value:number}[]=[]
@AJRichardson谢谢。您还需要初始化数组:
让tmpTabKV:{key:string,value:number}[]=[]
@AJRichardson谢谢。你不需要
new
关键字^“不需要”=>“不能在那里”:-)你不需要
new
关键字^“不需要”=>“不能在那里”:-)