2016-07-05 11 views
0

was ich versuche, ist ein einfaches Chat-System, das ich habe funktioniert; Es gibt ein Problem: Wenn jemand keinen Benutzernamen eingibt, wird sein Benutzername "No Name", der dann in das Benutzer-Array geschoben wird.Node.js bestimmte Strings im Array zählen

Wenn jemand anderes beitritt und keinen Namen eingibt, möchte ich, dass er 'No Name 1, 2, 3 usw.' lautet. Das Problem ist, ich kann nicht scheinen, die Länge des Arrays mit der Zeichenfolge 'No Name' zu zählen. Mein Code ist.

var unnamed = users.indexOf('No Name').length; 
for(i = 0; i < unnamed; i++){ 
    socket.username = 'No Name ' + i; 
} 

Dies wird dann eine for-Schleife eingeben, um die nächste Nummer am Ende ihres Benutzernamens zu bestimmen. Ich habe getan console.log(unnamed); es sagt nur undefined. Irgendwelche Tipps/Lösungen wären super! Vielen Dank.

+2

Sie sollten nur einen separaten Zähler halten, wenn Sie eine „No Name“ Benutzer erstellen . – pay

+2

indexOf gibt die Position des ersten Auftretens zurück – nem035

Antwort

0

Sie sollten einen Zähler von Benutzern ohne Namen behalten. Jedes Mal, wenn ein leerer Benutzername eingegeben wird, können Sie einfach diesen Zähler nachschlagen, benennen Sie den neuen Benutzer entsprechend und erhöht den Zähler um 1.

var unNamedCounter = 0; 

if(socket.username == '') 
{ 
if(unNamedCounter == 0) 
    socket.username = 'No Name'; 
else 
    socket.username = 'No Name ' + unNamedCounter; 

    unNamedCounter++; 
} 
+2

Dies funktioniert und vermeidet das Problem, zwei "No Name 2" -Nutzer zu generieren, wenn der zweite sich abmeldet und ein neuer es ersetzt, aber auch bedeutet, dass es irgendwann "No Name 21903123" geben wird – tadman

+0

@tadman Ja, du hast Recht, wenn es so weiter geht. Das sollte in den meisten Fällen kein Problem sein. Und wenn es immer noch ein Problem ist, können wir es in gewisser Weise so behandeln, als würde man bei einer bestimmten Bedingung den Zähler von 0 starten. –

+0

Er kann einfach einen maximal zulässigen "No Name" -Benutzer in seinem Chat festlegen und eine kreisförmige Liste für das Index-Recycling verwenden. – bpinhosilva