在打字稿中动态按下键和值

问题描述 投票:0回答:1

我想动态地将对象键和值放入数组。我认为这很简单,例如:

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"},
]

就是这样

javascript angular typescript push
1个回答
0
投票

如果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; }

© www.soinside.com 2019 - 2024. All rights reserved.