gpt4 book ai didi

JavaScript 数组洗牌器不工作

转载 作者:行者123 更新时间:2023-11-28 12:06:21 25 4
gpt4 key购买 nike

我尝试编写一些 JavaScript 来获取数组的条目并打乱顺序。但它并没有像它应该的那样编译。似乎只运行一次 for 循环。我错过了什么?

//random number between 1 and num
function randInt(num){
return Math.floor(num*Math.random()+1);
}

//shuffles deck (array) of any size
function shuffle(array){
var newArray = new Array();
var n = array.length;
for(i=0; i<n; i++){
var entry = randInt(array.length) - 1;
newArray[i] = array[entry]; //assigns random entry in initial array to new array
array = array.splice(entry, 1); //removes the entry that was stored into newArray
}
array = newArray;
}

最佳答案

  • array.splice 修改 array 并返回删除的项目。您想丢弃该元素,因此只需执行此操作即可,而不是覆盖 array:
array.splice(entry, 1);
  • + 1randInt 中,然后执行 - 1 似乎是多余的。
  • 使用var i = 0(尽管看看我的最后一点)。
  • 使用 [] 而不是 new Array(),因为后者通常不被使用。
  • 返回新数组而不是覆盖数组:
return newArray;
  • 您修改了array,这样您就不能再循环到n,因为长度每次都会减少1。您可能需要 while(array.length > 0) { ... } 而不是 for 循环。

关于JavaScript 数组洗牌器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9202700/

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