2016-07-05 43 views
0

我想要做的是一个简单的聊天系统,我已经工作了;有一个问题:每当有人没有输入用户名时,我会将他们的用户名变为'No Name',然后将其推送到用户数组中。Node.js计算数组中的特定字符串

如果有其他人加入并且没有输入名字我希望它是'没有名称1,2,3等'问题是我似乎无法用字符串'No Name'来计算数组的长度。我的代码是。

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

然后,这将进入一个for循环,以确定下一个号码放在他们的用户名的末尾。我做了console.log(unnamed);它只是说未定义。任何提示/解决方案将是伟大的!谢谢。

+2

增加计数器你应该保持一个单独的计数器,当你创建一个“NO NAME”用户。 – pay

+2

indexOf返回第一次出现的位置 – nem035

回答

0

您应该保留一个没有名字的用户计数器。每当进入一个空白的用户名,你可以简单地查找此计数器,因此命名新的用户和1

var unNamedCounter = 0; 

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

    unNamedCounter++; 
} 
+2

这是有效的,并且避免了在第二次注销并且新的一个用户替换它时产生两个“No Name 2”用户的问题,但是也意味着有一天会出现“No Name 21903123” – tadman

+0

@tadman是的,你说得对,如果这样下去的话。尽管在大多数情况下这应该不成问题。如果它仍然是一个问题,我们可以以某种方式处理它,比如从0开始计数某个特定条件。 –

+0

他可以简单地在聊天中设置允许的最大“无名”用户,并使用循环列表进行索引回收。 – bpinhosilva