我的问题很简单,但我无法找到办法使其工作
这个想法是,如果变量(数字)符合另一个变量(cond)上定义的条件,则运行一些代码
示例:
var cond = '> 4';
var number = 5;
// Some type of if statement to check if 5 is > 4
答案 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)
您可以使用函数来检查条件。
res/raw/a.txt
&#13;
答案 4 :(得分:-1)
你可以使用eval,但要确保你先阅读eval:
var cond = '> 4';
var number = 5;
console.log(eval(("" + number + cond)));