gpt4 book ai didi

javascript - 从数组中删除所有项目(单独)

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

我有一个数组,其中包含有限数量的项目。我想随机删除项目,直到所有项目都被使用过一次。

示例 [1,2,3,4,5]

使用了随机数 5,所以我不想再这样了。使用了随机数 2,所以我不想再这样了。等等..

我可以有另一个已用数字列表,并检查新的随机数是否不在其中,但是当数组中 50 个数字中只剩下 1 个或两个数字时,这可能需要很长时间。

有没有办法从 JavaScript 数组中删除项目?它会创建一个数组吗?这会效率低下吗?

数组是这样做的错误方法吗?

编辑:这里有一些很好的答案。我最终随机化了数组列表,然后拼接第一个项目,即我取出的项目。

最佳答案

结合使用Math.random()splice():

var arr = [1, 2, 3, 4, 5],
i;

while ( arr.length ) {
i = Math.floor( Math.random() * arr.length );
alert( arr.splice(i, 1) );
}

现场演示: http://jsfiddle.net/simevidas/n2Bmk/

<小时/>

更新:您可以使用此函数从数组中删除随机项目:

function popRandomItem(arr) {   
return arr.length ?
arr.splice(Math.floor(Math.random() * arr.length), 1)[0] : null;
}

因此,如果您有一个数组 x,则 popRandomItem(x) 将从该数组中删除一个随机项目并返回该项目。 (如果x是一个空数组,该函数将返回null。)

现场演示: https://jsbin.com/wetumec/edit?js,console

关于javascript - 从数组中删除所有项目(单独),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267769/

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