我正在为我的Discord机器人创建一个降雨功能,为聊天中最活跃的玩家降低积分。我正在使用each()语句,因此我可以为数据库中的每个人分配信用额度。
现在我想要的是在下雨结束时,一条消息出现在与所有获奖者名字的聊天中,但我唯一得到的是机器人在聊天中分别显示每个名字。
如何将所有单独的数组条目映射回一个字符串/消息,如下所示。
姓名,姓名,姓名
名称,名称,名称,名称
这是我正在处理的代码。
PLACE = args[0];
AMOUNT = args[1];
COUNT = args[2];
async function MakeSomeMagic() {
await DB.each(`SELECT * FROM Wallet WHERE GuildID = ${G.id} AND UserID NOT IN(${A.id}) ORDER BY ${PLACE} DESC LIMIT ${COUNT}`, function(err, R) {
var Index;
var Array = [];
Array.push({Name: `${R.UserName}`})
for (Index = 0; Index < Array.length; ++Index) {
var x = parseFloat(AMOUNT).toFixed(3);
var y = parseFloat(COUNT);
var Calc = x / y;
var END = R.Balance + Calc;
DB.run(`UPDATE Wallet SET Balance = ?, Activity = '${Time}' WHERE UserID = ? AND GuildID = ?`, [END, R.UserID, G.id]);
}
});
};
答案 0 :(得分:1)
如何将所有单独的数组条目映射回一个字符串
你可以在数组上调用join
,并以逗号作为分隔符。即。
var mystring = Array.join(", ")
修改
async function MakeSomeMagic() {
var arr= [];
await DB.each(`SELECT * FROM Wallet WHERE GuildID = ${G.id} AND UserID NOT IN(${A.id}) ORDER BY ${PLACE} DESC LIMIT ${COUNT}`, function(err, R) {
var Index;
arr.push({
Name: `${R.UserName}`
})
for (Index = 0; Index < arr.length; ++Index) {
var x = parseFloat(AMOUNT).toFixed(3);
var y = parseFloat(COUNT);
var Calc = x / y;
var END = R.Balance + Calc;
DB.run(`UPDATE Wallet SET Balance = ?, Activity = '${Time}' WHERE UserID = ? AND GuildID = ?`, [END, R.UserID, G.id]);
}
});
C.send(arr.join(", "));
};
请注意,Array是一个保留字 - 您不应该命名变量Array。