Discord.js数组变量改变后如何操作变量使文本输出显示
Discord.js How to manipulate variables to make the text output display after array variables change
var Playe0;
var loca = ['L0', 'R0', 'L1', 'R1', 'L2', 'R2', 'L3', 'R3'];
var dead = [0, 0, 0, 0, 0, 0, 0, 0];
bot.on("message", function (msg) {
var alive = dead.map((v, i) => !v ? loca[i] : null).filter(v => v != null);
if (msg.content === "!p0") { Player0 = msg.author.id; msg.channel.send(`Registered`); }
if (msg.author.id === Player0) {
if (msg.content === "k") {
dead[0] = 1;
msg.channel.send(`Targets: ` + alive.join(", ")); }
}
这段代码最终完成了我所需要的,但是它执行它的过程是不正确的。
它应该将死数组的第一个索引更改为 1 或 0,然后发送消息。
当前,它发送消息然后更改值。在行话之外,它不会像它应该的那样从输出中删除值。
L0 所需输出的用户输入:k
当前输出:Targets: L0, R0, L1, R1, L2, R2, L3, R3
期望输出:Tagets: R0, L1, R1, L2, R2, L3, R3
我现在删除了额外的玩家,因为我可以分发更改。
如果与 R0 关联的用户之后输入 k
,则输出为 R0, L1, R1, L2, R2, L3, R3
这表明代码正在更改索引,但它是在注册更改之前发送消息。这可能是由于放置或使用了 alive 变量。
您的 alive
变量永远不会及时更新,因为它发生在您更新 dead[0]
之前。将 var alive = dead.map((v, i) => !v ? loca[i] : null).filter(v => v != null);
移动到 dead[0] = 1;
下。
var Playe0;
var loca = ['L0', 'R0', 'L1', 'R1', 'L2', 'R2', 'L3', 'R3'];
var dead = [0, 0, 0, 0, 0, 0, 0, 0];
bot.on("message", function (msg) {
var alive = dead.map((v, i) => !v ? loca[i] : null).filter(v => v != null);
if (msg.content === "!p0") { Player0 = msg.author.id; msg.channel.send(`Registered`); }
if (msg.author.id === Player0) {
if (msg.content === "k") {
dead[0] = 1;
msg.channel.send(`Targets: ` + alive.join(", ")); }
}
这段代码最终完成了我所需要的,但是它执行它的过程是不正确的。
它应该将死数组的第一个索引更改为 1 或 0,然后发送消息。
当前,它发送消息然后更改值。在行话之外,它不会像它应该的那样从输出中删除值。
L0 所需输出的用户输入:k
当前输出:Targets: L0, R0, L1, R1, L2, R2, L3, R3
期望输出:Tagets: R0, L1, R1, L2, R2, L3, R3
我现在删除了额外的玩家,因为我可以分发更改。
如果与 R0 关联的用户之后输入 k
,则输出为 R0, L1, R1, L2, R2, L3, R3
这表明代码正在更改索引,但它是在注册更改之前发送消息。这可能是由于放置或使用了 alive 变量。
您的 alive
变量永远不会及时更新,因为它发生在您更新 dead[0]
之前。将 var alive = dead.map((v, i) => !v ? loca[i] : null).filter(v => v != null);
移动到 dead[0] = 1;
下。