2011-12-02 49 views
4
var y=document.forms["form"]["user"].value 
    if (y==null || y=="") 
     { 
      alert("Username cannot be Blank"); 
      return false; 
     }; 

var x = new Array(); 
    x[0] = "bill"; 
    x[1] = "ted"; 
    x[2] = "jim"; 
    for (keyVar in x) 
     { 
      if (x==y) 
      { 
       alert("Username Taken"); 
       return false; 
      }; 

     }; 

如何將一個變量與JavaScript數組中的變量進行比較,我設法做出了上面的例子,但是第二部分,我需要的一點不起作用。有任何想法嗎 ?如何通過檢查JavaScript數組來檢查用戶名是否被採用。

回答

3

你應該使用對象來代替:

var y = document.forms["form"]["user"].value; 
if (y == null || y == "") { 
    alert("Username cannot be Blank"); 
    return false; 
}; 

var x = {}; 
x["bill"] = true; 
x["ted"] = true; 
x["jim"] = true; 
if (x[y] === true) { 
    alert("Username Taken"); 
    return false; 
} 
4

你可以簡單地檢查與Array.prototype.indexOf方法的數組。

var x = [ 'bill', 'ted', 'jim' ], 
    y = 'ted'; 

if(x.indexOf(y) > -1) { 
    alert('Username Taken'); 
    return false; 
} 
+0

我認爲的indexOf是不是檢查,如果慢得多一個對象的屬性是真實的(當數組增長時,這會變得更相關) –

+0

@Nicola這可能是最大的因爲OP想要對數組進行搜索,所以直接回答。如果數組被排序,那麼我們可以使用二進制搜索。否則,使用一個對象可能會產生更好的結果...(鍵/值,TRIE等) –

+0

@NicolaPeluchetti:在性能成爲問題之前,數組需要變得非常龐大。但是,ES.next將解決所有問題,弱點地圖即將到來:) – jAndy

3

你可以做到這一點很簡單的jQuery

數組列表值

var x = new Array(); 
x[0] = "bill"; 
x[1] = "ted"; 
x[2] = "jim"; 

然後

if(jQuery.inArray("John", arr) == -1){ 
    alert("Username Taken"); 
} 
+0

這裏沒有介入jQuery –

相關問題