Javascript 将运算符从字符串类型转换为运算符类型
我想随机生成这样的东西 233+333=566 我的意思是,第一个数字、运算符和第二个数字是随机生成的 所以,我现在写了这段代码Javascript 将运算符从字符串类型转换为运算符类型,javascript,jquery,google-chrome-extension,Javascript,Jquery,Google Chrome Extension,我想随机生成这样的东西 233+333=566 我的意思是,第一个数字、运算符和第二个数字是随机生成的 所以,我现在写了这段代码 var x = parseInt(Math.random()*1000), y = parseInt(Math.random()*1000), operators = ['+', '-', '*', '/'], operatorNum = parseInt(Math.random()*4), operator = operators[o
var x = parseInt(Math.random()*1000),
y = parseInt(Math.random()*1000),
operators = ['+', '-', '*', '/'],
operatorNum = parseInt(Math.random()*4),
operator = operators[operatorNum],
result;
result = x + operator + y;
但这给了我一个类似748/264的字符串。
它没有给我生成的计算结果
我想我需要将运算符从字符串转换为运算符类型。
但是,我认为没有运算符类型
编辑
我正在构建一个Chrome扩展。根据Chrome扩展政策,我不允许使用eval功能。评估它:
result = eval(x + operator + y);
编辑
因为不能使用eval,所以需要构建自己的数学函数。如果您实际上不需要知道它们的名称,则可以指定该数组中的四个函数,如:
myFunctions = [
function(a, b){return a+b;},
function(a, b){return a-b;},
function(a, b){return a/b;},
function(a, b){return a*b;}
];
然后随机选择一个,并用x和y变量作为参数调用它,就像之前一样:result=myFunctions[parseIntMath.random*4]x,y 我认为这里的解决方案是使用
在这种情况下,使用eval是安全的,但是-这是一个可以使用的函数,JavaScript中没有内置的运算符函数,但是您可以非常轻松地创建自己的函数:
var operators = {
'+': function(a, b) {
return a + b;
},
'*': function(a, b) {
return a * b;
},
....
};
然后致电相应的接线员:
operators['+'](4, 7); // 11
但在这里,您可以使用eval并将字符串视为JavaScript代码:
eval('2 + 2'); // 4
在这里似乎是无害的,因为没有用户输入需要担心。@j08691只是引导用户了解eval的危险。在这种情况下,它是非常安全的谢谢!很抱歉,我没有提到我正在构建一个chrome扩展,我不允许以任何方式使用eval函数。@crzyonez777在这种情况下,请使用Blender的解决方案。非常感谢。但很抱歉,我没有提到我正在构建一个Chrome扩展,我不允许使用eval函数。如果我在程序中使用eval函数,Chrome会给我一个错误。不客气。嗯,我想你需要建立你自己的基本数学函数乘、除、加、减,然后使用它们。所以,最后你会得到这样的结果:result=randomChosenFunctiona,b;非常感谢你。我懂了。我需要建立自己的数学函数@搅拌机给了我提示,所以试着让它工作吧!谢谢是的,但是如果你实际上不需要知道它们的名字,你可以在数组中指定四个函数,比如:myFunctions=[function,b{returna+b;},function,b{returna-b;},function,b{returna/b;},function,b{returna*b;};。然后随机选择一个,并用x和y变量作为参数调用它,如下所示:myFunctions[parseIntMath.random*4]x,y;哦,这似乎是我的处境所需要的答案。我没有提到我正在构建一个chrome扩展,我不允许使用eval功能。所以,似乎我需要像你教我的那样构建自己的数学函数。我会像你教我的那样努力工作。我现在需要出去,所以我回来后,我会回到这个问题上来。谢谢@crzyonez777您可以通过调整CSP使eval在Chrome扩展中工作,请参阅。
eval('2 + 2'); // 4