gpt4 book ai didi

javascript - 随机选择数组并删除项目(jQuery)

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

我试图找到一种方法从随机数组中获取值而不重复它们,我找到了以下解决方案:

var letters = ["A", "B", "C"];
var getRandom = (function(array) {
var notGivenItems = array.map(function(el) {
return el;
});
var getIndex = function() {
return Math.floor(Math.random() * notGivenItems.length);
};

return function() {
if (notGivenItems.length === 0) {
return;
}

return notGivenItems.splice(getIndex(), 1)[0];
};
})(letters);

console.log(getRandom());
console.log(getRandom());
console.log(getRandom());
console.log(getRandom());

如果我打印 console.log() 4 次,最后,数组将显示为 undefined,而这正是我所需要的。但是,我需要 (function () {... 不要自动触发,因为值是通过 AJAX 提供的。所以,应该是这样的:

function selec() {

var getRandom = (function(array) {
var notGivenItems = array.map(function(el) {
return el;
});
var getIndex = function() {
return Math.floor(Math.random() * notGivenItems.length);
};

return function() {
if (notGivenItems.length === 0) {
return;
}

return notGivenItems.splice(getIndex(), 1)[0];
};
})(letters);

return getRandom();
}

console.log(selec());

但是随后,该函数会继续连续打印值,而不返回 undefined

最佳答案

我希望我已经理解了你的问题..如果是的话,那就真的很容易了。检查这个fiddle

var letters = ["A", "B", "C"];

function getRandom(array){
var notGivenItems = array.map(function(el){
return el;
});
var getIndex=function(){
return Math.floor(Math.random() * notGivenItems.length)
};
if (notGivenItems.length === 0)
return;
return array.splice(getIndex(), 1)[0];
}

console.log(getRandom(letters));
console.log(getRandom(letters));
console.log(getRandom(letters));
console.log(getRandom(letters));

关于javascript - 随机选择数组并删除项目(jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35612921/

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