我想随机生成这样的东西。
233 + 333 = 566
我的意思是第一个数字,运算符和第二个数字是随机生成的。
所以,我现在写了这段代码。
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
功能。
答案 0 :(得分:7)
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
答案 1 :(得分:3)
评估它:
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[parseInt(Math.random()*4)](x, y);
。
答案 2 :(得分:2)