【问题标题】:JavaScript get 3 unique random object from arrayJavaScript 从数组中获取 3 个唯一的随机对象
【发布时间】:2020-12-05 02:13:52
【问题描述】:

我想做的是,显示随机名称,我已经知道了,但我想显示来自对象的 3 个随机名称,而且也是唯一的,我的意思是不显示重复。我该怎么做?

var items = [{name: 'Tom', phone: '12321'}, {name: 'Jerry', phone: '235677'}, {name: 'Mike', phone: '11209765'}, {name: 'Robert', phone: '5345'}, {name: 'Danny', phone: '1247774'}, {name: 'Josef', phone: '1199900'}, {name: 'Rainbow', phone: '12675'}, {name: 'Avi', phone: '12344'}, {name: 'Shani', phone: '12222767'}];

var item1 = items[Math.floor(Math.random() * items.length)];
var item2 = items[Math.floor(Math.random() * items.length)];
var item3 = items[Math.floor(Math.random() * items.length)];

$('#Name-1').text('Name 1: '+item1.name);
$('#Name-2').text('Name 2: '+item2.name);
$('#Name-3').text('Name 3: '+item3.name);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="Name-1"></div>
<div id="Name-2"></div>
<div id="Name-3"></div>

这项工作但有时会显示重复,如下所示:

Name 1: Danny
Name 2: Mike
Name 3: Mike

【问题讨论】:

  • 为什么要结束我的问题??这不是我的答案!
  • 为什么...因为已经有很多类似的问题了。上面的链接不是你需要的吗?
  • @charlietfl 不,我没有问如何制作随机数组!我问如何显示3个独特的!来自对象的随机数组
  • 第一个答案告诉您一个非常有效的方法,并解释为 “您可以随机排列数组并选择前四个。” 在您的情况下只有三个。这怎么不能解决你的问题?通过自己的一些搜索,您还会发现其他方法
  • 我同意@charlietfl 的观点,这个问题应该作为一个 dup 被关闭,因为它从来没有提到任何关于价值存储的事情,并且一旦看到就再也不会显示它们。 OP 需要添加具体的要求是什么所以这个问题首先不会作为重复而关闭!

标签: javascript jquery


【解决方案1】:

这将适用于您的情况。从数组中删除选定的项目。它总是会给你独特的价值。

var items = [{
  name: 'Tom',
  phone: '12321'
}, {
  name: 'Jerry',
  phone: '235677'
}, {
  name: 'Mike',
  phone: '11209765'
}, {
  name: 'Robert',
  phone: '5345'
}, {
  name: 'Danny',
  phone: '1247774'
}, {
  name: 'Josef',
  phone: '1199900'
}, {
  name: 'Rainbow',
  phone: '12675'
}, {
  name: 'Avi',
  phone: '12344'
}, {
  name: 'Shani',
  phone: '12222767'
}];

function getRandom(items) {

  let names = [];
  let first = Math.floor(Math.random() * items.length);
  names.push(items[first].name);
  items.splice(first, 1);
  let second = Math.floor(Math.random() * items.length);
  names.push(items[second].name);
  items.splice(second, 1);
  let third = Math.floor(Math.random() * items.length);
  names.push(items[third].name);
  return names;
}

console.log(getRandom([...items]));

【讨论】:

  • 使用3 计算索引意味着您永远不会看到数组中前5 或6 之后的任何项目。计算应基于总长度。也可以将这段代码干燥成一个简单的循环,而不需要所有的重复
猜你喜欢
  • 2020-05-24
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 2019-01-03
  • 1970-01-01
  • 2020-07-14
  • 2011-06-30
  • 1970-01-01
相关资源
最近更新 更多