我想动态地将对象键和值放入数组。我认为这很简单,例如:
list.forEach(element => {
element["carAttributes"].map((o) =>
{
this.car.push(
{
o.Name: o.Value
}
);
})
});
但是它不起作用,因为{o:any; }不能分配给CarInterface类型为CarInterface的类型:
export interface CarInterface {
"name": string;
}
o还给我类似
{"Name": "name", "Value": "Mercedes"}
我要做的是获取键名称的值和键值的值,并将所有内容放在一个对象中,例如:
{"name": "Mercedes"}
我有很多值,所以我必须推送this.car
列表中的所有内容。那有可能吗?
编辑:
我可能是这样的人
{
"Cars": [{
"carAttributes": [{
"Name": "name",
"Value": "Mercedes"
}, {
"Name": "color",
"Value": "grey"
}, {
"Name": "model",
"Value": "A220"
}],
"available": true,
},{
"carAttributes": [{
"Name": "name",
"Value": "Mercedes"
}, {
"Name": "color",
"Value": "red"
}, {
"Name": "model",
"Value": "B250E"
}],
"available": false,
}]
}
我需要为具有这种结构的每辆汽车创建一个对象数组
[
{"name": "Mercedes", "color": "grey", "model": "A220"},
{"name": "Mercedes", "color": "red", "model": "B250E"},
]
就是这样
如果this.car
数组的类型为CarInterface[]
,则只能推送具有name
属性的对象:
this.car.push({name: o.Value});
即使使用正确的语法声明动态键:this.car.push({[o.Name]: o.Value})
,TypeScript也会抱怨它,并说类似的东西
类型为'{[x:string]:string; }'不可分配给“ CarInterface”类型的参数。缺少属性“名称”输入'{[x:string]:string; }