2016-07-05 18 views
0

私がしようとしているのは、私が働いている簡単なチャットシステムです。誰かがユーザー名を入力しないときはいつでもユーザー名を「No Name」にしてユーザーアレイにプッシュしてしまうという問題があります。Node.js配列内の特定の文字列を数えます。

誰かが参加して名前を入力しない場合、私はそれが 'No Name 1、2、3 etc.'であることを望みます。問題は、文字列 '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

によってカウンタをインクリメントすることができますが、「ノー・ネーム」ユーザーを作成するときにあなただけのための別のカウンターを維持する必要があります。 – 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

これは機能し、2つ目のログアウト時に2つの「No Name 2」ユーザーが生成され、新しいユーザーがログアウトしたときに新しいユーザーがそれを置き換える問題を回避しますが、 "No Name 21903123" – tadman

+0

@tadmanそうですね、そうですね。ほとんどの場合、それは問題ではありません。それでも問題が解決しない場合は、いくつかの特定の条件で0からカウンタを開始するなど、何らかの方法で処理できます。 –

+0

彼はチャットで最大の「No Name」ユーザーを設定し、インデックスリサイクルには循環リストを使用するだけです。 – bpinhosilva

関連する問題