我创建一个像这样的数组

var membersList = $('#chatbox_members' , avacweb_chat.doc.body).find('li');
var onlineUsers = [];
var offLineUsers = [];
for(var i =0;i<membersList.length;i++){
    var name = $(membersList[i]).text().replace("@","");
    onlineUsers.push(name);
}
alert(onlineUsers);


listedUsers会像这样出现[Mr.EasyBB,Tonight,Tomorrow,Gone];

问题是我是否在setInterval之外使用两个for循环,而在内部使用一个for循环进行比较-

var membersList = $('#chatbox_members' , _chat.doc.body).find('li');
var onlineUsers = [];
var offLineUsers= [];
for(var i =0;i<membersList.length;i++){
    var name = $(membersList[i]).text().replace("@","");
    onlineUsers.push(name);
}
var int = setInterval(function() {
    var newMember = ('#chatbox_members' , _chat.doc.body).find('li');
    for(var i =0;i<newMember.length;i++){
        var name = $(newMember[i]).text().replace("@","");
        offLineUsers.push(name);
    }


然后会得到:

onlineUsers = [Mr.EasyBB,Tonight,Tomorrow,Gone];
offLineUsers =  [Mr.EasyBB,Tonight];


因此,要获得脱机用户,我想基本上将onlineUsers替换为offLineUsers,然后应返回Tomorrow,Gone。虽然我知道一个对象没有替换功能,但是我该怎么做呢?

我不认为splice函数会起作用,因为您需要有参数,而pop或shift是数组的开始和结束。

最佳答案

for(var i = 0 ; i < offLineUsers.length ; i++)
{
    for(var j = 0 ; j < onlineUsers.length ; j++)
    {
        if(onlineUsers[j] == offLineUsers[i])
        {
            onlineUsers.splice(j,1);
        }
    }
}


试试这个片段。

09-06 19:54