gpt4 book ai didi

javascript - 在 for 循环中从数组中获取随机项,然后从数组中删除

转载 作者:行者123 更新时间:2023-12-02 19:12:51 25 4
gpt4 key购买 nike

我正在编写一个脚本,onload 会将一个类添加到 12 个 DIV 中的随机 4 个中,然后从数组中删除该 DIV 的 ID。

我有一个数组设置,其中包含所有 12 个 DIV ID。

有时,当我重新加载页面时,4 个 DIV 具有该类,而其他时候只有 3 个 DIV 具有该类。

有点困惑为什么会发生这种情况。 我注释掉了从数组中删除的代码,看看这是否是问题所在,但仍然是同样的问题。

这是我的代码:

//Randomize Which Shoes Are Positive And Negative
function randomizeShoes(){
allGroundShoes = new Array('ground_black_1','ground_black_2','ground_brown_1','ground_brown_2','ground_clown_1','ground_clown_2','ground_disco_1','ground_disco_2','ground_moccasins_1','ground_moccasins_2','ground_red_1','ground_red_2');
for(var i=0; i < 4; i++){
randomAllGroundShoes = allGroundShoes[Math.floor(Math.random() * allGroundShoes.length)];
$('#'+randomAllGroundShoes+'').addClass('shoeNegitive');
//randomShoeID = allGroundShoes.indexOf('randomAllGroundShoes');
//if(randomShoeID != -1){ allGroundShoes.splice(randomShoeID, 1); }
}
}

最佳答案

当您删除找到的元素时,您将传入字符串文字而不是变量名称:

allGroundShoes.indexOf('randomAllGroundShoes');

由于没有元素'randomAllGroundShoes',因此永远不会找到该元素,并且不会从数组中删除任何元素。

应该是:

allGroundShoes.indexOf(randomAllGroundShoes);

但是,您不止一次地做同样的事情。您根本不需要检查 allGroundShoes.indexOf() 。您可以将随机数存储在变量中并再次引用它。但是,即使这样也超出了您的需要。只需调用 splice() 即可获取您的值:

randomAllGroundShoes = allGroundShoes.splice(
Math.floor(Math.random() * allGroundShoes.length), 1)[0];
$('#'+randomAllGroundShoes).addClass('shoeNegitive');

通过这种方式,您可以一步检索您的值并将其从数组中删除 - 无需额外查找。

jsfiddle.net/kRNTg

关于javascript - 在 for 循环中从数组中获取随机项,然后从数组中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13484322/

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