我想要一个在Javascript中接受对象的switch / case语句。
该功能如下所示。
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
}
}
这不起作用,我使用了if / else语句,但我觉得这样的开关/案例非常适合这种情况。想法?
答案 0 :(得分:3)
更改
switch(values) {
到
switch(true) {
如果你不知道切换案例(kudos to blex),必要时使用一些break
。
答案 1 :(得分:0)
你正在使用它就像一个不必要(和错误)的函数参数。由于switch语句检查值是否等于大小写,因此您需要使用:
switch(true)
答案 2 :(得分:0)
const switchCase=(obj={},str='')=>obj[Object.keys(obj).find(ele=>ele.toString().split('|').includes(str.toString())) || 'default']
console.log(switchCase({
default:'o',
40:'ko',
xyz:'hi',
'yi|th' :'ho'
},'yi'))