typescript 如何将对象传递到数组

relj7zay  于 2022-11-26  发布在  TypeScript
关注(0)|答案(2)|浏览(230)

输出我得到的

{
0:{modifierId: 4, modifierName: 'Garlic',  modifierPrice: 60 }
1:{modifierId: 1, modifierName: 'Tartar ',  modifierPrice: 60}
2:{modifierId: 3, modifierName: 'Herb ',  modifierPrice: 60}
itemId:387
itemName:"BUFFALO WINGS"
itemPrice:500
itemQuantity:0
}

我正在使用angular处理销售点项目。概念是当用户点击itemName按钮时,它将在对话框中显示它的修饰符。所有这些数据都来自restful API。当我点击修饰符时,它的对象将传递到项目的对象中。在这种情况下,当我使用ngFor* 调用要在购物车中显示的项目时,它会给出一个错误。因为angular不允许在ngFor* 中传递对象,所以它只对数组有效。

预期输出

[
0:{modifierId: 4, modifierName: 'Garlic', modifierPrice: 60}
1:{modifierId: 1, modifierName: 'Tartar ',  modifierPrice: 60}
2:{modifierId: 3, modifierName: 'Herb ', modifierPrice: 60}
itemId:387
itemName:"BUFFALO WINGS"
itemPrice:500
itemQuantity:0
*length:3*
]

现在我需要的是,将修改器的对象传递到一个数组中。那么,我该怎么做呢

ohtdti5x

ohtdti5x1#

如果希望对象只在模板中以数组形式进行强制转换,则可以使用angular keyvalue pipe

<div *ngFor="let item of map | keyvalue">
      {{item.key}}:{{item.value}}
</div>

或者,在组件中,可以将object into an array转换为:

let arr = Object.keys(obj).map((k) => obj[k])
f0brbegy

f0brbegy2#

我想你真的很想得到一个

{
    itemId:387
    itemName:"BUFFALO WINGS"
    itemPrice:500
    itemQuantity:0,
    modifiers:[
       {modifierId: 4, modifierName: 'Garlic', modifierPrice: 60},
       {modifierId: 1, modifierName: 'Tartar ',  modifierPrice: 60},
       {modifierId: 3, modifierName: 'Herb ', modifierPrice: 60}
    ]
}

(the“长度”是新对象.修饰符.长度)

newObject={
      itemId:original.itemId,
      itemName:original.itemName,
      itemPrice:original.itemPrice,
      itemQuantity:original.itemQuantity,
      modifiers:Object.keys(original)
            .filter((key:string)=>key.indexOf('item')<0)
            .map((key:string)=>original[key])
 }

相关问题