2014-03-06 30 views
0

檢查匹配的用戶名...通過對象循環匹配用戶名,如果找到添加1

我正在循環瀏覽json對象datam。我正在檢查是否字符串變量un尚不存在於json對象id un中。如果它確實將1添加到字符串變量un。

var un = "John" 

for (var i=0;i<datam.length;i++){ 
    if(datam[i].un == un){ 
     un = un+1 //I know this is wrong what's the correct way? :) 
     alert(un) //John1 if John1 exist John2 etc.. 
    } 
} 

回答

0

下面介紹如何讓所有的用戶名唯一。

var datam = [ 
     { un: 'John' }, 
     { un: 'John' }, 
     { un: 'John' }, 
     { un: 'Foo' } 
    ], 
    unCount = {}; 

datam.forEach(function (user, i) { 
    var un = user.un; 

    if (unCount[un]) user.un += unCount[un]++; 
    else unCount[un] = 1; 
}); 

datam[0].un; // John 
datam[1].un; // John1 
+0

SQL查詢結果存儲在DATAM。所以我不能回去糾正所有重複的名字,再加上我不應該在確保每個用戶名都是唯一的解決方案後才能使用該解決方案。我只是需要它來檢查新用戶不會有一個已經存在的用戶... –

+0

@ Quaking-Mess我寧願告訴用戶他的名字已被採取,並允許他嘗試新的一個,而不是強迫他,如最後添加一個數字。 – plalx

+0

好主意,我知道我不完全是描述性的,我只是想直接看代碼。但帳戶將由管理員製作,然後管理員會通知用戶他們的用戶名和密碼......但我想我會按照這個建議去減少每個人的困惑。 –

0

找到了解決辦法:

var j = 0 
var testname = un 

    for (var i=0;i<datam.length;i++){ 

     if(datam[i].un == testname){ 
      j++ 
      testname = un+j.toString(); 
      i = 0 //restart the loop and see if John(1,2,3..) is in datam.un 
      } 

     } 
    alert(testname)