假设我们有一个项目数组:
const arr1 = [22, 54, 67, 11, ...so on]
和一个空的:
let arr2 = []
我可以添加随机项目:
arr2 = [...arr2, arr1[Math.floor(Math.random()*arr1.length)]]
但是如何将第一个数组中的随机项添加到第二个数组中并且已经添加的项不应添加?
是的,我们可以在某些 tmp 变量中保留添加的索引,但这似乎不对,我认为应该有不同的解决方案。
注意: 数组展开,因为我需要添加包含某些事件的项目。 例如,用户单击按钮,新项目将添加到第二个数组,并且该数组可能包含已添加的元素
最佳答案
您可以创建自定义逻辑来将随机值推送到 arr2
中,这样条件是 arr2
中的数字必须是唯一的,并且它将具有最大随机数直到arr1
的长度:
const arr1 = [27, 54, 67, 11, 15, 22, 26, 58, 45, 87];
let arr2 = [];
function getRandom(){
var randomNumber = arr1[Math.floor(Math.random()*arr1.length)];
while(arr2.indexOf(randomNumber) !== -1 && arr2.length !== arr1.length) {
randomNumber = arr1[Math.floor(Math.random()*arr1.length)];
}
arr2.push(randomNumber);
}
getRandom(); getRandom(); getRandom(); getRandom(); getRandom(); getRandom(); getRandom(); getRandom(); getRandom(); getRandom();getRandom();
console.log(arr2);
关于javascript - 将随机且不存在的项目从另一个数组添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51211799/