Упрощать многообразные “else if” основанные на стоимости переменной string

Следующий код функционирует и у него есть 4 условия, но я хочу упростить это, так как это в действительности 150 условий: будет какой-то другой способ уменьшать этот алгоритм, и чего не было 150 else if?

for (var j = 0; j < $scope.cants.length; j++) {
  if ($scope.cants[j].type === "bases") {       
    $scope.bases += $scope.cants[j].quantity;
  } else if ($scope.cants[j].type === "proteins") {     
    $scope.proteins += $scope.cants[j].quantity;
  } else if ($scope.cants[j].type === "veggies") {      
    $scope.veggies += $scope.cants[j].quantity;
  } else if ($scope.cants[j].type === "sauces") {       
    $scope.sauces += $scope.cants[j].quantity;
  } 
  $scope.componentsPlate = $scope.proteins +  $scope.veggies + $scope.sauces +     $scope.dryfruits + $scope.bases + $scope.proteinsExtra +        $scope.veggiesExtra + $scope.saucesExtra + $scope.dryfruitsExtra +  $scope.basesExtra
}
9
задан 19.01.2016, 19:29
3 ответа

Синтаксис:

$scope.nombreDePropiedad

Он эквивалентный в:

$scope["nombreDePropiedad"]

Что ты можешь использовать возможность, чтобы использовать sgte форму:

for (var j = 0; j < $scope.cants.length; j++) {
    $scope[$scope.cants[j].type] += $scope.cants[j].quantity;
}

Таким образом ты не нуждаешься в том, чтобы сделать никакой if или switch так как правильный член объекта $scope он будет выбран начиная с string, который ты переместишь его между квадратными скобками.

9
ответ дан 24.11.2019, 14:58

То, что ты стремишься к тому, чтобы сделать, - полностью противоречащее тому, что рекомендует делать.

Цель хранить данные в переменных с установленным именем в одном namespace он состоит в том, чтобы относиться к ним, когда это будет необходимо зная имя переменной.

Когда имя, распределенное информации не известно, используются словари (arrays) в котором проходит имя, ассоциируемое с типом этого, который имеется намерение использовать, в случае, если этот явится хранившимся в переменной и не было известно Ваше имя априори.

То, что ты стремишься к тому, чтобы сделать, не является только мало рекомендуемым, кроме inmantenible, взобравшись на код, но он идет против начал программирования — то, что ты должен делать, состоит в том, чтобы переделывать, как ты должен располагать в порядке твои данные, чтобы улучшать читабельность и качество твоего кода.

Если ты комментируешь нам, почему ты стремишься к тому, чтобы использовать переменные во что бы то ни стало, может быть, давайте мочь помогать тебе, но просто так разъяснения, эти - мои рекомендации.

Последующее редактирование

Я одеваю твою проблему, решение, выдвинутое в другом ответе - лучшее.

1
ответ дан 24.11.2019, 14:58

Может быть, Вы смогли тасовать posibilidada использования одного switch, ввиду того, что Вы упоминаете о том, что это 150 casos, я думаю, что использование switch лучше результат относительно 150 casos, если бы они были одними мало, может быть, это не было бы очевидно, но для 150 меня выдвинуло бы использование переключателя.

С другой стороны, если Вы принимаете решение использовать if else, попробовал бы помещать самые общие случаи в начале if.

P.D: Вы говорите уменьшать алгоритм, не, если также включает делать изменения для эффективности того же самого

0
ответ дан 24.11.2019, 14:58
  • 1
    Проблема не синтаксиса, а implementaci и # 243; n – JuanRocamonde 19.01.2016, 19:38
  • 2
    @JuanRocamonde из договора я удаляю ответ. Привет – Angel Angel 19.01.2016, 19:40
  • 3
    Он не необходим, просто я проясняю для лектората. Смоги служить помощью. – JuanRocamonde 19.01.2016, 19:42

Теги

Похожие вопросы