admin管理员组文章数量:1241001
I want to generate something like this at random.
233 + 333 = 566
I mean the first number and the operator and the second number are generated at random.
So, I wrote this code now.
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;
But this just gives me something like "748/264"
as a string.
It doesn't give me the result of the calculation generated.
I suppose I need to convert operator from string to operator type. But, I don't think there is a operator type.
Edited
I'm building a Chrome extension. As per the Chrome extension policy, I'm not allowed to use the eval
function.
I want to generate something like this at random.
233 + 333 = 566
I mean the first number and the operator and the second number are generated at random.
So, I wrote this code now.
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;
But this just gives me something like "748/264"
as a string.
It doesn't give me the result of the calculation generated.
I suppose I need to convert operator from string to operator type. But, I don't think there is a operator type.
Edited
I'm building a Chrome extension. As per the Chrome extension policy, I'm not allowed to use the eval
function.
3 Answers
Reset to default 10There are no built-in operator functions in JavaScript, but you can make your own pretty easily:
var operators = {
'+': function(a, b) {
return a + b;
},
'*': function(a, b) {
return a * b;
},
....
};
And then call the appropriate operator:
operators['+'](4, 7); // 11
But here, you can just use eval
and treat your string as JavaScript code:
eval('2 + 2'); // 4
Evaluate it:
result = eval(x + operator + y);
EDIT
Since you can't use eval, you need to build your own math functions. You can just specify the four functions inside that array (if you don't actually need to know their names), like:
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;}
];
Then just randomly pick one and call it with your x and y variables as parameters, just like you did before: result = myFunctions[parseInt(Math.random()*4)](x, y);
.
I think the solution here is to use eval()
result = eval(x + operator + y)
In this case it is safe to use eval, but Be warned - It is a dangerous function to use
本文标签: javascriptConvert operator from string type to operator typeStack Overflow
版权声明:本文标题:javascript - Convert operator from string type to operator type - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1740101164a2224470.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论