【问题标题】:Typescript: Array of Objects of another Array (Angular6)打字稿:另一个数组的对象数组(Angular6)
【发布时间】:2019-02-13 17:27:20
【问题描述】:

我有这个“食物”数组:

"food": [
 { 
    "id": 11,
    "name": "Kabeljaufilet",
    "preis": 3.55,
    "art": "mit Fisch"
},
{
  "id": 12,
  "name": "Spaghetti Bolognese",
  "preis": 3.85,
  "art": "mit Fleisch"
},
{
  "id": 13,
  "name": "Pizza Salami",
  "preis": 3.99,
  "art": "mit Fleisch"
},

现在我需要另一个名为“foodplan”的数组,我可以在其中添加、删除第一个数组中的etc. 食物。

我从未创建过实现了另一个数组的对象的数组。现在怎么办?

Foodplan 需要属性:FoodPerWeek,其中有 5 个食物对象,WeekNumber Foodplan 需要显示Food、addFood、changeFood 和deleteFood 的方法。

【问题讨论】:

  • 食物对象是否保存在另一个数组中并不重要,您的foodplan 应该只是一个数组,就像您在那里的food 一样
  • @user184994 以及我可以使用哪些方法从食物阵列中获取特定对象? - 这里的问题是,我需要 5 个不同的食物计划(通过添加周数)持续 5 周,我该如何处理?
  • 这取决于你真正想做什么。例如,您可以使用它的索引获取一个,使用this.food[0] 将获取第一个,或者您可以使用find 函数获取一个,例如this.food.find((f) => f.id === 12) 将返回ID 为12 的那个
  • Foodplan 需要属性:FoodPerWeek,其中有 5 个食物对象,WeekNumber Foodplan 需要显示Food 的方法, addFood、changeFood 和 deleteFood。
  • 因此您可以使用push 将项目添加到数组中。 this.foodPlan.foodPerWeek.push(this.food[0]) 会将第一项的副本推送到food,并将其放入foodPerWeek

标签: arrays angular typescript object


【解决方案1】:

这只是一个基本示例。 当然,如果您愿意,您可以动态调整数组的大小。 需要进行一些检查来验证输入等。我把这个留给你。玩得开心。

enum WeekDay {
  Monday = 0,
  Tuesday = 1,
  Wednesday = 2,
  Thursday = 3,
  Friday = 4
}

class Food {
  public id: number
  public name: string
  public preis: number
  public art: string
}

class FoodPlan {
  private weeklyFood: Food[] = new Array<>(5)

  addFood(food: Food, weekDay: WeekDay) {
    this.weeklyFood[weekDay] = food
  }

  showFood(weekDay: WeekDay) {
    console.log(this.weeklyFood[weekDay])
  }

  remove(weekDay: WeekDay) {
    this.weeklyFood[weekDay] = null
  }
}
let foodPlan: FoodPlan = new FoodPlan()
let firstFood: Food = new Food()

firstFood.id = 1
firstFood.name = "Kabeljaufilet"
firstFood.preis = 3.55
firstFood.art = "mit Fisch"

foodPlan.addFood(firstFood, WeekDay.Wednesday)
foodPlan.showFood(WeekDay.Wednesday)
foodPlan.remove(WeekDay.Wednesday)

【讨论】:

  • 嘿。首先谢谢,是否可以在您的解决方案中添加功能,例如添加/删除/更改 foodplans
  • 呵呵。我很难在 Angular6/Typescript 中实现你的代码......结构只是需要不同。
  • 我不能做你的作业,对不起。您必须自己尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-18
  • 2018-09-23
  • 2019-06-30
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
相关资源
最近更新 更多