Как получить разные выходы после выбора разных переключателей? - PullRequest
1 голос
/ 08 июля 2019

Я работаю над проектом 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 ]

1 голос
/ 08 июля 2019

Вы можете рассмотреть возможность создания массива массивов (зубчатый массив) для агрегирования информации.

Например, вы можете поместить определение для домашних упражнений в:

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 для именования индексов массив.

Теперь будет намного проще отображать данный план, когда вы читаете настройки пользователя. Допустим, они выбрали частоту три раза и местоположение тренажерный зал , и вы отобразите plans[location][frequency].

0 голосов
/ 09 июля 2019

Создайте отдельный массив и заполняйте его каждым упражнением. Каждое упражнение должно быть объектом, который содержит название упражнения и дополнительные свойства, такие как частота и место тренировки. Эти дополнительные свойства будут использоваться для динамической фильтрации массива в зависимости от выбранных переключателей.

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

Когда пользователь выбирает 2 и «домой», отфильтруйте упражнения по частоте обучения и расположению обучения. "exampleExercise1" будет возвращен в приведенном выше примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...