javascript - d3.randomInt 不是函数

标签 javascript d3.js data-visualization

请不要仅仅因为它只讨论随​​机函数就关闭这个问题。

嗨,

我有一个关于 d3.randomInt() 的虚拟问题;

d3.randomInt() 的输出是一个函数而不是一个值。 因此,要获得 0,10 之间的随机数字, 我需要做的是(我猜)

var x = d3.randomInt(0,10)();

但它说 d3.randomInt 不是一个函数。 所以我尝试了

var x = d3.randomInt(0,10) 

以防万一,它们都不起作用。 我没有看到 d3 的发行说明说 randomint 不再可用。 所以我确信有一种方法可以获取这些值。

提前谢谢您。

最佳答案

d3.randomInt是 d3-random 模块版本 2 的一部分。由于主 D3 bundle 版本 5 仍然使用该模块的版本 1,因此在加载 bundle 时该方法尚不可用。引入该方法是为了解决问题 randomInt([min = 0, ]max) #26并将成为即将推出的 version 6 的一部分主包的。

在撰写本文时,尚未公开发布主捆绑版本 6 的预发布版本。尽管如此,为了让它正常工作,有几种选择:

  1. 创建您自己的 custom bundle包含 d3-random 模块 v2。
  2. 加载单独的模块而不是整个包,包括 d3-random v2。
  3. 最简单且干扰最小的方法可能是通过添加 few lines 来扩展 D3 v5将缺少的方法 d3.randomInt() 添加到 d3 对象。查看以下代码片段(加载 D3 v5.7.0)以获取工作演示。

d3.randomInt = d3.randomInt || (function sourceRandomInt(source) {
  function randomInt(min, max) {
    if (arguments.length < 2) max = min, min = 0;
    min = Math.floor(min);
    max = Math.floor(max) - min;
    return function() {
      return Math.floor(source() * max + min);
    };
  }

  randomInt.source = sourceRandomInt;

  return randomInt;
})(Math.random);

const random = d3.randomInt(5, 10);
console.log(random());
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

关于javascript - d3.randomInt 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61017839/

相关文章:

javascript - 如何根据日历将 JSON 数据分组到杂草中?

javascript - 是否有 cubism.js + WebSocket 的教程或示例?

javascript - D3.js 和弦图 - 将鼠标悬停在弧上时文本出现/消失

javascript - D3.js - 如何解决拖动折线图时出现 NAN 错误(Jsfiddle 提供)

javascript - 在 iFrame 中暂停 YouTube 视频

javascript - 在解决 promise 之前运行多个 ajax 调用

javascript - JS - 如果 fetch 是一个 post,则在 fetch-then promise 情况下不会调用函数

javascript - 在 React 中导入文件的不同方式

javascript - d3 行生成器返回 null 而不是路径数据字符串

d3.js - 如何为 D3js 进行几个月/几天的本地化?