我有以下代码,我在不同的地方使用
if(!value[field]){
errors[field] = `${FIELDS[field].errorMessage}`;
}
是否可以在javascript中将其设置为变量?
我想把它作为一个对象的属性并从那里调用它。 以下是我的代码
_.each(FIELDS, (type, field) => {
if (FIELDS[field].validate) {
if (!value[field]) {
errors[field] = `${FIELDS[field].errorMessage}`;
}
switch (FIELDS[field].formType) {
case "email":
if (!/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i.test(value.email)) {
errors.email = 'Invalid email address'
}
default:
if (!value[field]) {
errors[field] = `${FIELDS[field].errorMessage}`;
}
}
}
});
return errors;
}
答案 0 :(得分:2)
您可能尝试的一件事是将其作为字符串保存到变量并在需要时运行eval,但它可能有点慢并且如果您的程序是异步的,可能会出现问题
var condition ="if(!value[field]){errors[field]=`${FIELDS[field].errorMessage}`;}"
然后只需在任何你想要的地方运行eval(条件)
for(var x = 0 ; eval(condition);x++){}
答案 1 :(得分:0)
定义一个函数setError
:
function setError() {
if(!value[field]) {
errors[field] = `${FIELDS[field].errorMessage}`;
}
}
将其放在您传递给_.each
的箭头功能中。
然后,您想要使用它的每个地方只需调用它:
setError();
这就是函数的用途。
但是,正如您的代码所代表的那样,您执行此操作两次,一次在顶部,另一次在default
案例中。你为什么这样做?