Discord.js:推送到数组是组合字符串

Posted

技术标签:

【中文标题】Discord.js:推送到数组是组合字符串【英文标题】:Discord.js: Pushing to array is combining strings 【发布时间】:2021-02-19 15:30:17 【问题描述】:

我正在编辑嵌入消息,以通过反应将“注册”到列表的用户更新。但是,在我的数组长度达到 2 后,它会在添加新条目之前开始组合整个数组的字符串。这是我的代码:

let newParticipant = getNickname(guildMembers) || user.tag;

//this line exists because "value" cannot be empty in an embed field
//so this removes the placeholder on the first entry

if (newEmbed.fields[2].value[0] === "0") 
    newEmbed.fields[2].value = [
        `$newEmbed.fields[2].value.length. $newParticipant`,
    ];
 else 
    let participants = [newEmbed.fields[2].value];

    let newEntry = participants.length + 1 + ". " + newParticipant;
    participants.push(newEntry);

    newEmbed.fields[2] =  name: "Participants", value: participants ;
    console.log(newEmbed.fields[2].value);

但是,这是我在 3 次反应后得到的输出:

[ '1. Cardinal' ]
[ '1. Cardinal', '2. Cardinal' ]
[ '1. Cardinal\n2. Cardinal', '2. Cardinal' ]

这是不和谐的东西吗?我的逻辑不好吗?在引入数组和其他一些东西时,我尝试使用扩展运算符...

【问题讨论】:

这是因为 newEmbed.fields[2].value 返回 one 单个字符串。但是我不明白这会是什么问题,因为它标有换行符,因此您可以使用它。你试过做你想做的事吗? 我试图让它与数组一起工作,这样我就可以逐渐增加数字,所以它是一个编号列表。 那么你可以分割你从嵌入中得到的字符串,这样你就有一个包含更多元素的数组 该解决方案有效!贴在下面。谢谢。 KISS 的好课 【参考方案1】:

这行得通。谢谢你值得羊驼。我仍然希望我知道到底发生了什么哈哈。

let participants = newEmbed.fields[2].value;
        let num = participants.split("\n").length;
        let newEntry = `\n$num + 1. $newParticipant`;
        participants += newEntry;

        newEmbed.fields[2] =  name: "Participants", value: participants ;
        console.log(newEmbed.fields[2].value);

【讨论】:

好吧,newEmbed.fields[2].value 返回一个字符串。因为您将该字符串设置为一个数组,所以该数组只有一个元素。因为您想根据数组中元素的数量来增加数字,所以您需要拆分它以确保您的所有行都注册为单独的元素。

以上是关于Discord.js:推送到数组是组合字符串的主要内容,如果未能解决你的问题,请参考以下文章

使用 mongoose 将字符串数组推送到 mongoDB

如何使用ajax将数据推送到数组

在jQuery中将字符串推送到AJAX成功函数中的数组不起作用

React JS将项目推送到数组以获取列表

Sqlite 返回值与数据库不同

无法使用猫鼬推送到阵列