【问题标题】:Bot sometimes posts NaN when I ask for a random image当我要求随机图像时,机器人有时会发布 NaN
【发布时间】:2018-01-13 22:35:22
【问题描述】:

我目前正在使用 discord.js 模块制作机器人。我在 JavaScript 或一般编程方面不是很好,我试过到处问这个问题,但我无法修复它。

我的机器人应该从我的计算机上本地保存 12 张图像的数组中提取图像。有时这会成功,但有时它只是在 DISCORD 中(不在控制台中)用“NaN”回复。

 else if (msg.content.startsWith(prefix + "duckquery")) {
    var ducks = [ {file: "./img/ducks1.jpg"}, {file: "./img/ducks2.jpg"}, {file: "./img/ducks3.jpg"}, +
    {file: "./img/ducks4.jpg"}, {file: "./img/ducks5.jpg"}, {file: "./img/ducks6.jpg"}, {file: "./img/ducks7.jpg"}, +
    {file: "./img/ducks8.jpg"}, {file: "./img/ducks9.jpg"}, {file: "./img/ducks10.jpg"}, {file: "./img/ducks11.jpg"}, +
    {file: "./img/ducks12.jpg"}];

    var duck = ducks[Math.floor(Math.random()*(ducks.length))]
    msg.channel.send(duck);

【问题讨论】:

  • 删除+ 定义中的+ 符号。
  • 好像成功了,非常感谢!我在某处读到您需要 + 号才能在新行上继续您的代码?
  • 如果你要连接一个字符串,你可以像"string 1" + "string 2"一样使用+,但不要在另一行继续。
  • 我试过到处问这个 - 我们不鼓励在这里未经声明的交叉发布。如果您已在其他论坛上发布此内容,请编辑或发布针对所有其他实例的问题的后续内容,尤其是这个问题。这将有助于未来的读者,他们将能够看到您已经有了答案,因此他们会发现他们不需要浪费时间发布您不再需要的答案。
  • 我之前在 irc 和 discord 聊天中问过,我不再参与,但这是我问的第一个论坛 :)

标签: javascript arrays image discord


【解决方案1】:

你不应该使用+,因为它试图添加两个对象,给你一个NaN(不是数字)

var ducks = [ {file: "./img/ducks1.jpg"}, {file: "./img/ducks2.jpg"}, {file: "./img/ducks3.jpg"}, +
{file: "./img/ducks4.jpg"}, {file: "./img/ducks5.jpg"}, {file: "./img/ducks6.jpg"}, {file: "./img/ducks7.jpg"}, +
{file: "./img/ducks8.jpg"}, {file: "./img/ducks9.jpg"}, {file: "./img/ducks10.jpg"}, {file: "./img/ducks11.jpg"}, +
{file: "./img/ducks12.jpg"}];

打印鸭子:

[Object, Object, Object, NaN, Object, Object, Object, NaN, Object, Object, Object, NaN]

改为使用:

var ducks = [
    {file: "./img/ducks1.jpg"}, {file: "./img/ducks2.jpg"}, {file: "./img/ducks3.jpg"},
    {file: "./img/ducks4.jpg"}, {file: "./img/ducks5.jpg"}, {file: "./img/ducks6.jpg"},
    {file: "./img/ducks7.jpg"}, {file: "./img/ducks8.jpg"}, {file: "./img/ducks9.jpg"},
    {file: "./img/ducks10.jpg"}, {file: "./img/ducks11.jpg"}, {file: "./img/ducks12.jpg"}
];

这给了你对象:

[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]

您确定需要对象数组而不是字符串数组吗?

var ducks = [
 "./img/ducks1.jpg", "./img/ducks2.jpg", "./img/ducks3.jpg",
 "./img/ducks4.jpg", "./img/ducks5.jpg", "./img/ducks6.jpg",
 "./img/ducks7.jpg", "./img/ducks8.jpg", "./img/ducks9.jpg",
 "./img/ducks10.jpg", "./img/ducks11.jpg", "./img/ducks12.jpg"
];

【讨论】:

  • 有道理,谢谢!看起来也好多了:)
猜你喜欢
  • 2017-11-19
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
相关资源
最近更新 更多