【问题标题】:Why doesn't the console log [Object] instead of my data?为什么控制台不记录 [Object] 而不是我的数据?
【发布时间】:2020-10-09 00:18:53
【问题描述】:

我有一个不和谐机器人,我想做一个 meme 命令。我将所有模因存储在一个 json 文件 memes.json 中,在我的 index.js 中我有一个变量用于获取其数据 const meme("./memes.json)" 在嵌入代码中我开始出现错误,我会留下我的代码供您帮助我。

const Discord = require("discord.js");

const meme = require("./memes.json")

function RandomNumbers(min, max) {
   return Math.round(Math.random() * (max -  min) + min);
}

client.on("message", function(message) {

const commandBody = message.content.slice(prefix.length);
const args = commandBody.split(' ');
const command = args.shift().toLowerCase();

//Other commands
}else if(command === 'meme'){
    const memeNumber = RandomNumbers(1, 6)
    const memeEmbed = new Discord.MessageEmbed()
    .setTitle('Meme')
    .setColor('#0099ff')
    console.log(meme+'.'+memeNumber)
    .setImage(meme+'.'+memeNumber)
    message.channel.send(memeEmbed)
}
//memes.json

{
    "1": "https://images7.memedroid.com/images/UPLOADED762/5e2e4a5a1d35b.jpeg",
    "2": "https://i.pinimg.com/originals/9f/8a/5a/9f8a5afe202b973259d76cbd925660e6.jpg",
    "3": "https://i.redd.it/3bfmb513ihd41.jpg",
    "4": "https://memeplanet.files.wordpress.com/2012/08/kiss-plz.jpg",
    "5": "https://i.kym-cdn.com/photos/images/newsfeed/001/780/926/b82.jpg",
    "6": "https://i.pinimg.com/originals/dd/e2/df/dde2df58419e90f30d3abdcb673717f1.png"
}

我把那个控制台登录在那里检查它会给我什么,它给了我这个

[对象对象].2

【问题讨论】:

  • 请发memes.json的内容
  • 这不是minimal reproducible example,请做一个。
  • 我强烈建议在您的代码编辑器中安装 Prettier 扩展,并在您的源代码上运行它,这样您就可以发布格式良好且格式通用的代码,以便任何使用 JS 的人都可以轻松阅读.缺少分号确实会影响此处的可读性。

标签: javascript node.js discord.js


【解决方案1】:

组合两个字符串不会产生功能性对象属性引用。您应该使用括号语法,就像对数组一样。

console.log(meme[memeNumber])

const sampleObj = { property: true }; // sample object
const propName = 'property';
console.log(sampleObj[propName]); // brackets work fine in general, but also with variables

你永远不应该这样做,永远,但为了彻底,你也可以eval它。

const sampleObj = { property: true };
const propName = 'property';
eval(`console.log(sampleObj.${propName})`);

【讨论】:

    【解决方案2】:

    发生这种情况是因为您的 json 是一个对象,并且您尝试记录执行此操作的 console.log(meme+'.'+memeNumber):console.log(meme.toString()+'.'+memeNumber) which {} .toString 是 [object Object]。

    如果您使用冒号作为分隔符(您不会遇到此类问题),您可以更有效地使用 console.log(),例如:console.log(meme, memeNumber) 将打印存储在 meme 中的对象和memeNumber中分别存储的号码。

    你可以通过使用来解决你的问题

    console.log(meme[memeNumber])

    分别

    .setImage(meme[memeNumber])

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-21
      • 2019-08-14
      • 1970-01-01
      相关资源
      最近更新 更多