奇怪的現象。 socketiosocketio array.splice不工作如果make console.log
服務器
我有代碼...
socket.on('disconnect', function(){
console.log('user disconnected');
for(var i=0; i<stores.length; i++){
var c = stores[i];
if(c.socketid == socket.id){
stores.splice(i,1);
break;
}
}
});
一切與.splice順利。如果我從別的地方打印店陣列,它顯示正確的...但在這種情況下
socket.on('disconnect', function(){
console.log('user disconnected');
for(var i=0; i<stores.length; i++){
var c = stores[i];
if(c.socketid == socket.id){
for(var i=0; i<stores.length;i++){
console.log(i+" one"+stores[i].name+"-"+stores[i].id)
}
stores.splice(i,1);
for(var i=0; i<stores.length;i++){
console.log(i+" two"+stores[i].name+"-"+stores[i].id)
}
break;
}
}
});
陣列並沒有失去它的價值,我從我的瀏覽器訪問的頁面(我連接),
socket.on('storelogged', function (msg){
var storeInfo = new Object();
storeInfo.name = msg.name;
storeInfo.id = msg.id;
storeInfo.socketid = socket.id;
stores.push(storeInfo);
console.log(msg.name + " has connected with " + msg.id + " id.");
});
so,店鋪推送。但是,當我在socket.on(「脫節」,回調)的第二種情況斷開店陣列仍包含的值(換句話說,拼接不工作)給了,多和更好的信息
評論。您也可以測試它並查看結果
您嵌入的'for'循環重寫'頂級'的''''''循環。或者在'for(let i = 0; ....)'中爲所有for循環使用'let'而不是'var',或者爲嵌入的'for'循環使用不同的變量名稱。 – jfriend00