Phénomène étrange. socketiosocketio array.splice ne fonctionne pas si make console.log
SERVEUR
j'ai ce code ...
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;
}
}
});
tout va bien avec le .splice. Si j'imprimer les magasins tableau d'ailleurs, il apparaît correct ... mais dans cette situation
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;
}
}
});
le tableau n'a pas perdu ses valeurs, je visite la page de mon navigateur (i connecté),
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.");
});
Ainsi, stocke poussé. Mais quand je suis déconnecté dans la deuxième situation de socket.on (« déconnexion », rappel) le tableau stocke contient toujours les valeurs (en d'autres termes, épissures ne fonctionnent pas)
commentaire pour donner, beaucoup plus et une meilleure information. Vous pouvez également le tester et voir les résultats
Vos boucles intégrées 'for' a réécriture de la variable 'i' à partir de la boucle' for' de niveau supérieur. Utilisez 'let' au lieu de' var' comme dans 'for (let i = 0; ....)' pour toutes vos boucles 'for' ou utilisez un nom de variable différent pour les boucles' for' intégrées. – jfriend00