如何通过检查JavaScript数组来检查用户名是否被采用。
问题描述:
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数组来检查用户名是否被采用。
答
你应该使用对象来代替:
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;
}
答
你可以简单地检查与Array.prototype.indexOf
方法的数组。
var x = [ 'bill', 'ted', 'jim' ],
y = 'ted';
if(x.indexOf(y) > -1) {
alert('Username Taken');
return false;
}
答
你可以做到这一点很简单的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 –
我认为的indexOf是不是检查,如果慢得多一个对象的属性是真实的(当数组增长时,这会变得更相关) –
@Nicola这可能是最大的因为OP想要对数组进行搜索,所以直接回答。如果数组被排序,那么我们可以使用二进制搜索。否则,使用一个对象可能会产生更好的结果...(键/值,TRIE等) –
@NicolaPeluchetti:在性能成为问题之前,数组需要变得非常庞大。但是,ES.next将解决所有问题,弱点地图即将到来:) – jAndy