为什么控制台不记录[Object]而不是我的数据?

时间:2020-10-08 16:02:14

标签: javascript node.js discord.js

我有一个不和谐的机器人,我想执行一个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

2 个答案:

答案 0 :(得分: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})`);

答案 1 :(得分:0)

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

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

您可以通过使用

解决问题

console.log(meme[memeNumber])

分别

.setImage(meme[memeNumber])