javascript - 将随机且不存在的项目从另一个数组添加到数组中

标签 javascript

假设我们有一个项目数组:

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/

相关文章:

javascript - 检查页面底部的 isset 不起作用

javascript - 封闭函数行为困惑

javascript - 计算器 : String Into Math Operation (JavaScript)

javascript - 如何使用ajax将select标签的值发送到驻留在同一页面上的php

javascript - 对象和嵌套对象生成

javascript - HTML 电子邮件消息显示为 "HtmlOutput"

javascript - 如何使用 Angular 使用 json 数据填充表?

javascript - 如何门面(代理)websocket 端口

javascript - 雪花和存储过程我们如何循环保存在内部阶段中的文件行?

javascript - Vue 相同组件输入不更新