Javascript:如果变量mets在另一个变量上定义的条件

时间:2016-11-04 20:26:04

标签: javascript if-statement

我的问题很简单,但我无法找到办法使其工作

这个想法是,如果变量(数字)符合另一个变量(cond)上定义的条件,则运行一些代码

示例:

var cond = '> 4';
var number = 5;
// Some type of if statement to check if 5 is > 4 

5 个答案:

答案 0 :(得分:2)

可以使用eval,但通常如果你诉诸eval,你就无法正确理解问题。

var cond = '> 4';
var number = 5;
if (eval(number + cond)) {
  console.log(number + cond);
}

另一种可能性是创建与条件相关的函数,然后将操作数存储在另一个变量中。

var compareFunctions = {
  '>': function(a, b) {
    return a > b;
  }
};

var op = '>';
var operand = 4;
var number = 5;
if (compareFunctions[op](number, operand)) {
  console.log(number + op + operand);
}

答案 1 :(得分:0)

你的意思是这样吗?

   if (eval(number+cond)){
      console.log("success");
   }

答案 2 :(得分:0)

简单但可能危险和丑陋的方式是使用var cond = '> 5'; console.log(eval(4 + cond)); console.log(eval(6 + cond));

let cond = '> 5';
const evaluateCondition = (value, condition) => {
  // Allows for >, <, >=, <=, !=, ==
  let [, operator, operand] = condition.match(/^\s*(>|<|>=|<=|!=|==)\s*(\d+)$/);
  switch(operator) {
      case '>':
        return value > operand;
      case '<':
        return value < operand;
      case '==':
        return value == operand;
      // ... implement other operators here
  }
};

console.log(evaluateCondition(4, cond));
console.log(evaluateCondition(6, cond));

然而,这很危险,因为如果该字符串以任何方式来自用户,他们可能会输入不良内容并使不良事件发生。

处理它的更合适的方法是正确解析它:

var a = 5, b;
a == 5 && (b = 2);

这将允许您定义有效的运算符并以安全的方式处理它们,也可以轻松捕获无效的输入。

在编辑更改问题之前,已完成以下操作。

您必须声明除此之外的变量,但您可以非常轻松地设置它。我将使用的语法如下所示:

&&

if之后的位仅在第一个条件为真时才执行。要用这样的语法设置变量,只需将其包装在括号中即可。

更传统的方式是使用var a = 5, b; if (a == 5) { b = 2; } 语句:

if

如果在var a = 5; if (a == 5) { var b = 2; } console.log(b) // undefined 语句中声明第二个变量,它就不存在于它之外:

{{1}}

这可能是让你失望的原因。

答案 3 :(得分:0)

您可以使用函数来检查条件。

&#13;
&#13;
res/raw/a.txt
&#13;
&#13;
&#13;

答案 4 :(得分:-1)

你可以使用eval,但要确保你先阅读eval:

var cond = '> 4';
var number = 5;
console.log(eval(("" + number + cond)));