gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 01:42:33 26 4
gpt4 key购买 nike

首先对不起我的英语。我正在编写一个小程序,将足球运动员分为两队: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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com