javascript - 将变量函数传递给数组 [Javascript]

标签 javascript jquery arrays

我查看了一堆引用资料,但找不到任何内容来解决我正在尝试做的事情。我是 Javascript 和 JQuery 的新手,所以我觉得我一定遗漏了一些东西。

我为 D&D 统计数据生成器创建了一个骰子滚筒。骰子滚筒工作正常:

function makeDie(sides) {
  var die = function () {
    return 1 + Math.random() * sides | 0;
  };

  die.times = function (count) {
    var rolls = [];
    for(var i = 0 ; i < count ; i++) {
      rolls.push(this());
    }
    return rolls;
  };

  return die;
}

var dice = {
  d4: makeDie(4),
  d6: makeDie(6),
  d8: makeDie(8),
  d10: makeDie(10),
  d12: makeDie(12),
  d20: makeDie(20),
};

然后我可以像这样从那里掷随机统计数据(掷 4d6,丢弃最低的骰子):

var stat = function (){
    x = dice.d6.times(4)
    x = x.sort();
    s = x[1] + x[2] + x[3]
    return s
    }

但是我想将统计数据传递到一个数组中:

var stats = [];
for (i=0; i<6; i++) {
    stats.push(stat);
    }
var stats = stats.sort();

但我得到的输出是以明文形式打印了 6 次的函数:

function (){ x = dice.d6.times(4) x = x.sort(); s = x[1] + x[2] + x[3] return s },

function (){ x = dice.d6.times(4) x = x.sort(); s = x[1] + x[2] + x[3] return s },

function (){ x = dice.d6.times(4) x = x.sort(); s = x[1] + x[2] + x[3] return s },

function (){ x = dice.d6.times(4) x = x.sort(); s = x[1] + x[2] + x[3] return s },

function (){ x = dice.d6.times(4) x = x.sort(); s = x[1] + x[2] + x[3] return s },

function (){ x = dice.d6.times(4) x = x.sort(); s = x[1] + x[2] + x[3] return s }

我错过了什么?

最佳答案

您将 stat 函数推送到数组,而不是调用该函数的结果。你需要像这样在 stat 之后加上 ():

var stats = [];
for (i=0; i<6; i++) {
    stats.push(stat());
}
var stats = stats.sort();

关于javascript - 将变量函数传递给数组 [Javascript],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32773279/

相关文章:

JavaScript 不会替换字符串的最后一个符号

jquery - 单击一个时如何关闭其他 Accordion ,以及如何在隐藏父级时隐藏描述?

javascript - Bootstrap 插件导致页面在移动设备上水平滚动

javascript - 在任何地方使用 JavaScript 变量

javascript - 清除数组然后填充它的方法最终会出现空数组

javascript - Firebase "update"操作下载数据?

javascript - Google map JavaScript - 将多个标记添加到一张 map

javascript - 如何在 Famo.us 中的表面之间滑动?

C - 将字符串数组分配给包含 21 个或更多崩溃的数组

java - 如何使用java反转数组中的字符元素?