Skip to content Skip to sidebar Skip to footer

Convert Operator From String Type To Operator Type

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 no

Solution 1:

There 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

Solution 2:

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);.


Solution 3:

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


Post a Comment for "Convert Operator From String Type To Operator Type"