我正在做一个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]
有人能给我个提示或想法吗?
答案 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”。