我创建一个像这样的数组
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);
}
}
}
试试这个片段。