检测之前是否输入了输入

时间:2014-07-28 00:37:35

标签: javascript arrays loops

最近,我一直无法检查输入(玩家名称)是否多次输入。这不是数据库内部,而是基于JavaScript中包含的数组。我在几次谷歌搜索后使用的是indexOf()函数。然而,这似乎不起作用。我的代码如下:

var numberPlayers = 1;
var players = [];

var AddPlayer = function() {
    if(!(players.indexOf($(".name")).val() > -1)) {
        players.push($(".name").val());

        $(".players").append("<p>Player number " + numberPlayers + " is " + $(".name").val() + "</p>");
        numberPlayers++;
    }
};

您会推荐哪种检测方法?我试过循环,但也不会工作。

编辑:更新了代码。仍然无法运作!

3 个答案:

答案 0 :(得分:2)

试试这个 - 请注意放置)的位置:

if(!(players.indexOf($(".name").val()) > -1)) {

而不是:

if(!(players.indexOf($(".name")).val() > -1)) {

实际上,为了便于阅读,这会更好:

var name = $('.name').val();
if ( players.indexOf(name) == -1)) {

一般情况下,尝试添加console.log和断点来查找错误...

答案 1 :(得分:1)

您可以使用对象(读取Set / Hash)而不是数组;无论如何它应该更快。 请注意,我也使用.text()来逃避文本。

var numberPlayers = 1;
var players = {};
var AddPlayer = function() {
    var newPlayer = $(".name").val();
    if(!(newPlayer in players)) {
        players[newPlayer] = true;
        $(".players").append($("<p>").text("Player number " + numberPlayers + " is " + newPlayer));
        numberPlayers++;
    }
};

答案 2 :(得分:0)

jQuery has a utility function

$.inArray(value, array)

它返回数组中值的索引。如果数组不包含值,则返回-1。