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;jfor(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)