无法从数组中删除项

Not able to remove item from array

本文关键字:删除 数组      更新时间:2023-09-26

我有一个聊天应用程序,它将消息添加到每个用户的数组中。它被设置为每隔一段时间抓取消息,然后将消息打印到客户端窗口。一旦它这样做了,它应该从数组中删除消息,因此它将被认为是未定义的,不再打印消息。在下面的代码中,我尝试了各种方法来让它工作,但没有运气。我尝试使用userMessage.user2.pop(),但控制台日志显示,弹出的唯一项是user1的第一个实例,之后它仍然构建数组。Splice()也不能工作。我不明白为什么这行不通。我已经包含了我认为只是必要的代码来找到我的错误:

var userMessage = [];
function getMessages() {
    window.setInterval(function(userMessage) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', 'http://localhost:1337/update/', true)
        xhr.send();
        xhr.onload = function() {
            var json = '{"messages":' + xhr.responseText + '}';
            newMessages = JSON.parse(json);
            userMessage = newMessages['messages'];
            if (userId == "1") {
                var i = (userMessage.user2.length) -1;
                var message = document.createElement('p');
                var text = document.createTextNode(userMessage.user2[i]);
                console.log(text.textContent);
                if(text.textContent != "undefined"){
                message.appendChild(text);
                chatRoom.appendChild(message);
                message.scrollIntoView(true);
                userMessage.user2.splice(-1,1); 
                }
            }
            if (userId == "2") {
                var i = (userMessage.user1.length)-1;
                var message = document.createElement('p');
                var text = document.createTextNode(userMessage.user1[i]);
                console.log(text);
                if(text.textContent != "undefined"){
                message.appendChild(text);
                chatRoom.appendChild(message);
                message.scrollIntoView(true);
                console.log(userMessage);
                userMessage.user1.splice(-1,1);
                }
            }
        };
    }, 2000);

*********后端代码******

var messages = {
    user1 : [],
    user2 : []
};
app.get('/random/:room/:userId/:message', function(req, res) {
    fs.appendFile(room.number.toString(), req.params.message, function(err) {
        if (err) {
            console.log('error writing messages to file');
        };
        fs.readFile('./' + room.number, 'utf-8', function(err, data) {
            if (err) {
                if (err.fileNotFound) {
                    return this.sendErrorMessage('can''t find the file, you linked it incorrectly');
                }
                console.log('error reading message file');
            };
            if (req.params.userId == 1) {
                messages.user1.push(data);
            } else {
                messages.user2.push(data);
            };
            console.log(messages);
            res.send(data);
            fs.unlink(req.params.room, function(err) {
            });
        });
    });
});
app.get('/update', function(req, res){
    res.send(messages);
    message.user1.pop();
    message.user2.pop();
});

我在后端使用了错误的变量。应该是短信,我用短信。固定的问题。