2016-07-05 41 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