在Javascript中将条件语句转换为变量

时间:2016-05-05 04:54:34

标签: javascript

我有以下代码,我在不同的地方使用

  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;
}

2 个答案:

答案 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案例中。你为什么这样做?