使用随机选择从数组返回函数值

时间:2014-02-12 01:10:01

标签: javascript function random

在返回数组内部函数的计算值时遇到了一些问题。并且非常感谢解决方案中的任何帮助以及关于更优雅的方法来解决这类问题的建议(即解决这个问题的更合理的方法)

我正在尝试创建一个生成两个随机数字的程序和一个随机运算符以应用于所述数字。

var num1 = Math.floor(Math.random() * 20 + 1);
console.log(num1);
var num2 = Math.floor(Math.random() * 1000 + 21);
console.log(num2);

我最初以这种方式设置我的随机运算符:

var ops = ["+", "-", "*", "/"] 

我尝试使用Math.random函数为ops数组选择一个随机索引号,但是遇到了各种错误,所以我开始搜索并在这里找到了一些有用的建议:How to use Javascript to ask the user random math questions?,但不能找不到从对象中检索随机值的方法,(参见Access non-numeric Object properties by index?)所以我改回使用了4个函数的数组,每个函数都有一个计算随机数的返回值(num1和num2)基于随机算子。

我已经完成了所有工作(即已经测试过我的随机数函数正在运行,甚至看到我的newOp变量每次都从ops数组返回一个不同的函数),但这是我无法得到的程序要做:返回函数的计算值。当我

alert(newOp)

我希望它提醒函数的而不是函数本身。 (例如提醒 - > 20而不是我目前得到的: - >功能a(){return(num1 + num2)}

这是我的代码。欢迎所有建议和见解!只是想学习。

var num1 = Math.floor(Math.random() * 20 + 1);
console.log(num1);
var num2 = Math.floor(Math.random() * 1000 + 21);
console.log(num2);
var ops = [
    function a(){return (num1 + num2)}, 
    function b(){return (num1 - num2)}, 
    function c(){return (num1 * num2)},
    function d(){return (num1 / num2)}];

var problem = function () {
    var random = Math.floor(Math.random()* 4 + 0);
    var newOp = ops[random];
    alert(newOp);
};
problem();

2 个答案:

答案 0 :(得分:1)

我认为你只是错过了实际的调用。

alert(newOp);更改为alert(newOp());

答案 1 :(得分:1)

我认为您只需将其更改为:

alert(newOp());

您的数组包含对函数的引用,但您没有调用它们。