当我要求随机图像时,Bot 有时会发布 NaN

Bot sometimes posts NaN when I ask for a random image

我目前正在使用 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);

你不应该使用 +,因为它试图添加两个对象,给你一个 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"
];