选择不同的单选按钮后如何获得不同的输出?

时间:2019-07-08 19:56:54

标签: jquery arrays angular typescript output

我正在做一个Angular项目。应使用单选按钮创建健身计划。我为Stackblitz.to编写了一个示例。

https://stackblitz.com/edit/angular-dfcnkc

我有几个数组,我希望根据选择的内容给出完美的答案。

homeBreast = ['exercise1', 'exercise2', 'exercise3'];
homeBiceps = ['exercise1', 'exercise2', 'exercise3'];
homeTriceps = ['exercise1', 'exercise2', 'exercise3'];

breast = ['exercise1', 'exercise2', 'exercise3'];
biceps = ['exercise1', 'exercise2', 'exercise3'];
triceps = ['exercise1', 'exercise2', 'exercise3'];

homeTwice1 = [this.homeBiceps, this.homeTriceps]
homeTwice2 = [this.homeBreast]

twice1 = [this.biceps, this.triceps]
twice2 = [this.breast]


homeThrice1 = [this.homeBiceps]
homeThrice2 = [this.homeBreast]
homeThrice3 = [this.homeTriceps]

thrice1 = [this.biceps]
thrice2 = [this.breast]
thrice3 = [this.triceps]

例如:如果我使用“你想多久去一次火车?答案:2”和“我想训练答案:在家”这两个选项应该排除掉。

// for the first day in the week
homeTwice1 = [this.homeBiceps, this.homeTriceps]
// for the second day of the week
homeTwice2 = [this.homeBreast]

当我选择“ 3”和“在健身房”时,输出应该像

// for the first day in the week
thrice1 = [this.biceps]
// for the second day of the week
thrice2 = [this.breast]
// for the third day in the week
thrice3 = [this.triceps]

有人能给我个提示或想法吗?

2 个答案:

答案 0 :(得分:1)

您可以考虑创建一个数组数组(锯齿状数组)以汇总信息。

例如,您可以将家庭练习的定义输入:

home = [
  [
    [this.homeBiceps, this.homeTriceps],
    [this.homeBreast]
  ],
  [
    [this.homeBiceps],
    [this.homeBreast],
    [this.homeTriceps]
  ]
];

然后,home[0]将在用户选择两天时保留锻炼计划,而home[1]将定义三天的锻炼计划。

进一步:

  • home[0][0]将返回两天内第一天的练习列表:[this.homeBiceps, this.homeTriceps]
  • home[0][1]将返回第二天和最后一天的练习列表:[this.homeBreast]

您可以通过将home和Gym合并为一个数组(例如,plans)来进一步扩展数组,但是在这种情况下,最好使用常量HOME=0, GYM=1来命名数组的索引。

现在,当您阅读用户的选项时,显示给定计划将更加容易。假设他们选择了三次的频率和 gym 的位置,然后显示plans[location][frequency]

答案 1 :(得分:0)

创建单个数组,并在每次练习中填充它。每个练习都应该是一个包含练习名称和其他属性(如训练频率和训练位置)的对象。这些附加属性将用于根据选定的单选按钮动态筛选数组。

[
  {
    name: "exampleExercise1",
    trainingFrequency: [2, 3, 4],
    trainingLocation: ["home"]
  },
  {
    name: "exampleExercise2",
    trainingFrequency: [3, 4],
    trainingLocation: ["home", "gym"]
  },
  ...
]

当用户选择2和“ home”时,将根据trainingFrequency和trainingLocation过滤练习。在上面的示例中将返回“ exampleExercise1”。