Discord.js如何操作变量以在数组变量更改后显示文本输出

时间:2017-11-04 20:42:36

标签: javascript discord discord.js

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变量。

1 个答案:

答案 0 :(得分:0)

您的alive变量永远不会及时更新,因为它会在您更新dead[0]之前发生。在var alive = dead.map((v, i) => !v ? loca[i] : null).filter(v => v != null);下移动dead[0] = 1;