【问题标题】:Returning function value from array using random selection使用随机选择从数组返回函数值
【发布时间】:2014-02-12 01:10:00
【问题描述】:

在返回数组内函数的计算值时遇到了一些问题。并希望在解决方案方面提供任何帮助以及有关解决此类问题的更优雅方法的建议(即解决此问题的更合乎逻辑的方法)

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

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)

我希望它提醒函数的 而不是函数本身。 (例如 alert -> 20 而不是我目前得到的:--> function 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();

【问题讨论】:

标签: javascript function random


【解决方案1】:

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

alert(newOp());

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

【讨论】:

  • 太棒了!很高兴这不是完全倒退,只是一个小错误。下次我一定会更彻底地调用。干杯!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2012-04-25
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2020-11-18
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    相关资源
    最近更新 更多