IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Tableau : rechercher l'entrée qui est détenue par le maximum de personnes


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Novembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux

    Informations forums :
    Inscription : Novembre 2011
    Messages : 5
    Par défaut Tableau : rechercher l'entrée qui est détenue par le maximum de personnes
    Bonjour,

    Je rencontre quelques difficultés pour avancer dans mon développement et j'aimerais avoir des avis différents sur ce problèmes. Mon serveur nodeJS collecte la position des utilisateurs et recherche pour chacun d'entre eux les utilisateurs à proximité (requête spatiale mongoose). Jusqu'ici tout va bien.

    Pour mettre en relation un utilisateur avec ses voisins, j'ai besoin de lui attribuer une room (socket.io) qui sera commune à celle de ses voisins.

    Exemple :

    L'utilisateur A peut être voisin de B, B peut être voisin de C mais A n'est pas nécessairement voisin de C. B devra donc avoir une room commune avec A, et une autre room commune avec C. Un utilisateur pourra donc avoir plusieurs rooms.

    Lorsqu'un utilisateur se connecte et qu'il a des voisins, laquelle des rooms de ses voisins lui attribuer ?

    Il faut lui attribuer la room qui est commune avec un maximum de voisins, celle utilisée par le plus grand nombre d'entre-eux. Tous les voisins ne l'utilisent peut-être pas, mais ceux-là ont peut-être une room en commun également que je devrait identifier pour l'attribuer aussi à mon utilisateur qui se connecte.

    Maintenant que les présentation sont faites passons aux choses concrètes

    Je souhaite trouver l'identifiant de la room détenue par le maximum de personnes à proximités. Idéalement le code pourrait se placer après le neighboors.forEach qui retourne l'objet neighboor (au singulier) que je peut interroger avec neighboor.username et

    Je ne sais pas si cela est utile mais neighboor.rooms. rooms est un tableau et je peux connaitre le nombre de rooms avec neighboor.rooms.length.

    Comment dois-je procéder pour faire cela ? j'avoue que c'est pas très clair pour moi et j'ai du mal à trouver une méthode.

    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function findUser () {
    	userModel.find( { loc : { $near : data.position, $maxDistance: 100/111.12 } } , function ( err, neighboors ){
    		if (err) {
    			console.log("error in finding near", err);
    			throw err;
    		}
    		console.log('user', data.username, 'has', neighboors.length, 'neighboors');
    		neighboors.forEach ( function (neighboor) {
    		// recherche 
    		});
    	});
    };
    Essai1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    neighboors.forEach ( function (neighboor) {
     
    			function tableau(nom,namespace) {
    			  this.name = nom;
    			  this.nbNamespace = namespace;
    			};
     
    			neighboorData = new tableau (neighboor.userId, neighboor.namespace.length);
    Essai2 avec tableau multidimensionnel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    tab = [];
    subtab = [];
     
    neighboors.forEach ( function (neighboor) {
     
    neighboorData = new tableau (neighboor.userId, neighboor.namespace.length);
     
    subtab.push(neighboorData);
    tab.push(subtab.concat());
     
    });

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Il faut établir un point localisant chaque room. Tu vois les barycentres en math ? Je pense que la position de chaque membre d'une room pourrait être considérée comme un barycentre 2D, et que la somme des barycentres de tous les membres donnerait le point de localisation de chaque room.

    Ensuite, il faut déterminer quand et comment sont créées tes rooms. Sinon il suffit de créer une room avec tous les voisins que tu récupères par ta requête et tu auras ta room optimale.

Discussions similaires

  1. recuperer un bean qui est utilisé par plusieurs jsp
    Par morgo1980 dans le forum Struts 1
    Réponses: 2
    Dernier message: 14/06/2007, 19h59
  2. pc qui est infecté par le virus brontok A.
    Par ess2007 dans le forum Sécurité
    Réponses: 4
    Dernier message: 13/06/2007, 17h01
  3. Ouvrir une BD qui est protegé par un mot de passe?
    Par issam16 dans le forum Sécurité
    Réponses: 1
    Dernier message: 18/07/2006, 18h15
  4. [ODBC] Recherche du champ qui est Primary Key
    Par XtofRoland dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/02/2006, 11h43
  5. Réponses: 2
    Dernier message: 16/10/2003, 17h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo