TypeScript/JavaScript数组值推送
我有一个目标: keyValue:{key:string,value:number}[] 我想从两个值向该数组添加一个新元素,如下所示: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; 我尝试了多种语法,看到了: 但我没有看到任何创建新对象的键。 数组的使用使我成为一个
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
关键字^“不需要”=>“不能在那里”:-)