2016-04-25 7 views
0

Я хотел иметь оператор switch/case, который принимает объект в Javascript.Передача объекта на случай переключения Javascript

Функция выглядит следующим образом.

const validate = (values) => { values is an object, can be accessed like so (values.bar, values.foo) 
    const errors = {} 

    switch(values) { 
    case !values.bar || values.bar === '': 
     errors.bar = 'Enter bar' 
    case values.bar.length < 10: 
     errors.bar = 'Bar is too short' 
    case !values.foo || values.foo === '': 
     errors.foo = 'Enter foo' 
    ... 

    default: 
     return errors 
    } 
} 

Это не работает, и я использовал если/другое заявление вместо этого, но я чувствую, как переключатель/случай был бы идеальным для такого примера. Мысли?

+0

Это не так, как работает 'switch': [' switch (** expression **) {'...] (https : //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/switch). – Andy

ответ

-1

Изменить

switch(values) { 

К

switch(true) { 

switch сверяется с strict equality.

И используйте, если необходимо, break, если вы не проваливаете чехлы переключателей (kudos to blex).

+2

Я не беру на себя обязательство 'switch statement'. Я думаю, что лучше использовать «if/else» –

+1

Интересно, я пропустил ту часть, где она строго проверяет выражение на значения в 'case' https://developer.mozilla.org/en-US/docs/ Web/JavaScript/Reference/Statement/switch, Спасибо, что указали это. – Diego

-1

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

switch(true) 
Смежные вопросы