最近,我一直在检查输入(玩家名称)是否输入了多次。这不是数据库内的,而只是基于JavaScript中包含的数组。经过几次Google搜索后,我一直使用的是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++;
    }
};


您会推荐哪种检测方法?我已经尝试过循环播放,但是也不行。

编辑:更新的代码。还是不行!

最佳答案

您可以使用对象(读取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++;
    }
};

09-30 15:13
查看更多