我目前正在使用基本的Pizza Delivery应用程序。因此,您单击所需的披萨,它将被添加到将结果分组的列表中。
因此它应该显示:
玛格丽塔披萨2x 披萨萨拉姆1x
我考虑过要制作一个像Map<Pizza, number>
这样的地图,其中比萨饼是我的对象,数字是数量。
但是,这感觉不对。另外,我无法通过ngFor进行迭代。
因此创建一个对象不是很容易,例如: {“ pizza”:披萨,“ amount”:2}并将其放入数组?
答案 0 :(得分:2)
这完全取决于您的用例。
因此创建对象不是很容易,例如:{“ pizza”: 披萨,“金额”:2},然后将其放入数组中?
如果要从数组中获取特定项目并且不知道索引,则必须搜索该数组。
Map
的好处在于您可以快速查找并且可以将Object
用作键,而不仅仅是String
。
class Pizza {};
// Using Map
const orderMap = new Map();
const margaritaPizza = new Pizza();
const salamePizza = new Pizza();
orderMap.set(margaritaPizza, 2);
orderMap.set(salamePizza, 1);
console.log(`Margarita ammount: ${orderMap.get(margaritaPizza)}`);
console.log(`Salame ammount: ${orderMap.get(salamePizza)}`);
// Using Array
const orderArr = [];
orderArr.push({
pizza: "margaritaPizza",
ammount: 2
});
orderArr.push({
pizza: "salamePizza",
ammount: 1
});
console.log(`Margarita ammount: ${orderArr.find(el => el.pizza === "margaritaPizza").ammount}`);
console.log(`Salame ammount: ${orderArr.find(el => el.pizza === "salamePizza").ammount}`);
此外,您说:
我考虑过要制作一个像“我的比萨饼”这样的地图 对象,数字就是数量。
但是,这感觉不对。我也不能用ngFor进行迭代 通过它。
Map
实现了@@iterator
,可以使用Array
转换为普通的Array.from()
。