Javascript 阵列拼接Pop移位读取

Javascript 阵列拼接Pop移位读取,javascript,arrays,push,splice,Javascript,Arrays,Push,Splice,我创建了一个这样的数组 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.p

我创建了一个这样的数组

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);
然后会得到:

onlineUsers = [Mr.EasyBB,Tonight,Tomorrow,Gone];
offLineUsers =  [Mr.EasyBB,Tonight];
因此,为了获得离线用户,我想基本上用
离线用户
替换
在线用户
,然后离线用户明天返回
,消失了
。虽然我知道一个对象没有替换的功能,但是我该怎么做呢

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

for(变量i=0;ifor(var i = 0 ; i < offLineUsers.length ; i++)
{
    for(var j = 0 ; j < onlineUsers.length ; j++)
    {
        if(onlineUsers[j] == offLineUsers[i])
        {
            onlineUsers.splice(j,1);
        }
    }
}
{ 对于(var j=0;j 请尝试此代码段。

for(var i=0;i

试试这个片段。

这应该可以满足您在现代浏览器上使用

输出

["Tomorrow", "Gone"]
["Tomorrow", "Gone"] 
["Tomorrow", "Gone"] 

如果您希望在不考虑传递给函数的属性顺序的情况下获得差异,那么您可以这样做

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

function difference(array1, array2) {
    var a = array1.filter(function (element) {
        return array2.indexOf(element) === -1;
    });

    var b = array2.filter(function (element) {
        return array1.indexOf(element) === -1;
    });

    return a.concat(b);
}

console.log(difference(onlineUsers, offLineUsers));
console.log(difference(offLineUsers, onlineUsers));
输出

["Tomorrow", "Gone"]
["Tomorrow", "Gone"] 
["Tomorrow", "Gone"] 

上,这应该可以满足您在现代浏览器上所需的功能,使用

输出

["Tomorrow", "Gone"]
["Tomorrow", "Gone"] 
["Tomorrow", "Gone"] 

如果您希望在不考虑传递给函数的属性顺序的情况下获得差异,那么您可以这样做

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

function difference(array1, array2) {
    var a = array1.filter(function (element) {
        return array2.indexOf(element) === -1;
    });

    var b = array2.filter(function (element) {
        return array1.indexOf(element) === -1;
    });

    return a.concat(b);
}

console.log(difference(onlineUsers, offLineUsers));
console.log(difference(offLineUsers, onlineUsers));
输出

["Tomorrow", "Gone"]
["Tomorrow", "Gone"] 
["Tomorrow", "Gone"] 

关于

如果我理解得很好,也许这会有帮助:

function bus_dup() {
for(var i = 0; i < offLineUsers.length; i++) {
    onLineUsers.splice(onLineUsers.indexOf(offLineUsers[i]),1);
}
offLineUsers = [];
}
功能总线_dup(){
对于(变量i=0;i
如果我理解得很好,也许这有助于:

function bus_dup() {
for(var i = 0; i < offLineUsers.length; i++) {
    onLineUsers.splice(onLineUsers.indexOf(offLineUsers[i]),1);
}
offLineUsers = [];
}
功能总线_dup(){
对于(变量i=0;i
您可以迭代数组,检查onlineUsers是否包含offLineUsers中的元素,如果它们确实存在,则删除这些元素。嗯,harsha,您能给我演示一个迭代数组的示例吗?请并感谢您,因为这将是我的第一次迭代。您的for循环是迭代。哦,这是一次迭代:/lol。让我看看我是否能解决这个问题,然后我猜您找到问题的解决方案了吗?如果是这样,请考虑与我们共享。您可以遍历数组,检查联机用户是否包含在Office用户中找到的元素,如果它们确实存在,删除这些元素。HMM HARHA,您能给我演示一个重复数组的例子吗?请并感谢您,因为这将是我的第一次迭代。您的for循环是迭代。哦,这是一次迭代:/lol。让我看看我是否能解决这个问题,然后我猜您找到问题的解决方案了吗?如果是这样,考虑和我们分享。不确定我在这里做了什么,也许是因为这些元素不存在?但是,是的,如果声明不是!==?为什么你们要把在线的成员推到离线阵列。我是说这个<代码>var newMember=('chatbox_members',avacweb_chat.doc.body).find('li');for(var i=0;我不确定我在这里做错了什么,可能是因为元素不存在?但是if语句不是吗!==?为什么你要把实际上在线的成员推到离线数组。我在说这个。
var newMember=('#chatbox_members',avacweb_chat.doc.body)。find('li');for(var i=0;i)