javascript - 数组删除、 "undefined"和 JavaScript

标签 javascript

首先对不起我的英语。 我正在编写一个小程序,将足球运动员分为两队:A 队和 B 队。 6 名玩家,A 3 名,B 3 名。当然还有随机数生成器。

在Java中我没有问题,我编写了这个程序并且运行完美,但是我对JS了解不多,并且数组项删除在这里似乎有点不同。

我的代码:

function hola(){
    var primero = document.getElementById("1").value;
    var segundo = document.getElementById("2").value;
    var tercero = document.getElementById("3").value;
    var cuarto = document.getElementById("4").value;
    var quinto = document.getElementById("5").value;
    var sexto = document.getElementById("6").value;

    var jugadores = [primero,segundo,tercero,cuarto,quinto,sexto];
    var eq1=[];
    var eq2=[];

    while (jugadores.length > 0){
        var largoArray = jugadores.length;
        var rand = Math.round(Math.random()* largoArray);
        console.log("before the if, array jugadores haves  ",jugadores.toString() ," and his size is  ",jugadores.length);
        if (eq1.length < 3){
            eq1.push(jugadores[rand]);
            remove(jugadores,jugadores[rand]);
        }else {
            eq2.push(jugadores[rand]);
            remove(jugadores,jugadores[rand]);
        }
    }
    document.getElementById("resultado").innerHTML= eq1 + " y el equipo B: " + eq2;
    console.log("equipo 1 ", eq1);
    console.log("equipo 2", eq2);           
}

function remove(array, element) {
    const index = array.indexOf(element);
    if (index !== -1) {
        array.splice(index, 1);
    }
}

它返回给我:

“equipo 1 (3) [未定义,“伊涅斯塔”,“罗纳尔多”] script2.js:35 equalo 2 (4) [“梅西”、“罗纳尔迪尼奥”、“马拉多纳”、“贝利”]”

我净化的控制台日志似乎工作正常...... 该数组每个 cicle 都短 1 个元素,并且 array.lenght 与所需的大小匹配。

我做错了什么?

最佳答案

问题上线了:

Math.round(Math.random() * largoArray)

因为有时会返回超出数组范围的索引。当发生这种情况时,这段代码:

eq1.push(jugadores[rand]);
remove(jugadores,jugadores[rand]);

不会工作,因为 jugadores[rand]undefined,所以你最终将 undefined 插入你的数组之一,而不需要从原始 jugadores 数组中删除任何内容。

<小时/>

要解决此问题,请使用 Math.floor 函数,并将该行更改为:

Math.floor(Math.random() * largoArray)

关于javascript - 数组删除、 "undefined"和 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50768662/

相关文章:

javascript - JSON 格式化程序库

javascript - 单击后检索元素/文本

javascript - 如何在HTML中分别操作两组选项卡?

javascript - getSelection() 和 insertNode——Javascript 文本选择

javascript - 'define' is not defined error on RequireJS & Webapp Yo generator

javascript - 函数不被识别为函数?

javascript - Javascript 中的 C3 图表 json 数据格式

javascript - 将文件中的所有 "E"字符替换为 "Z"并将所有 "Z"字符替换为 "E"

javascript - 监听关闭事件 react 导航

javascript - 添加动画以更改背景图像幻灯片