javascript - d3.randomInt 不是函数
问题描述
请不要仅仅因为它只是在谈论随机功能而关闭这个问题。
你好,
我有一个关于 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 捆绑包版本 5仍使用该模块的版本 1,因此在加载捆绑包时该方法尚不可用。该方法是作为问题randomInt([min = 0, ]max) #26的修复而引入的,并将成为即将发布的主包版本 6的一部分。
在撰写本文时,还没有公开发布的主捆绑包第 6 版的预发布版本。尽管如此,为了让它工作,有几个选择:
- 创建您自己的包含 d3-random 模块 v2的自定义包。
- 加载单独的模块而不是整个包,包括 d3-random v2。
- 可能最简单且侵入性最小的方法可能是通过将缺少的方法的几行
d3.randomInt()
添加到d3
对象来扩展 D3 v5。查看以下代码片段(加载 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>
推荐阅读
- vector - 相同类型的压缩向量会在地图闭包中产生不同的类型
- reactjs - 使用 JWT(在 cookie 中)、Google OAuth、Passport 和 React
- r - UpSetR 按颜色组分组
- python - 如何检查创建一百万个 ndarray 所花费的时间?
- github - 获取组织中的 Github 存储库所有者
- javascript - Bootstrap 4 垂直药丸导航未按预期工作
- python - 你如何让不和谐机器人一遍又一遍地发送相同的消息(python)
- python - 从光栅文件中提取数据
- c++ - 为什么我会收到一条错误消息:“'Ninety' 没有匹配的函数调用”?
- sql - SQL查询在一行中选择父名和子名