首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript从数组中获取3个唯一的随机对象

JavaScript从数组中获取3个唯一的随机对象
EN

Stack Overflow用户
提问于 2020-08-15 19:24:58
回答 1查看 162关注 0票数 0

我试图做的是,显示随机名称,我已经得到了它,但我想显示3个对象的随机名称,也是唯一的,我的意思是不显示重复。我该怎么做呢?

代码语言:javascript
复制
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);
代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
Name 1: Danny
Name 2: Mike
Name 3: Mike
EN

回答 1

Stack Overflow用户

发布于 2020-08-15 20:55:21

这将适用于您的情况。从数组中删除所选项目。它将始终为您提供唯一的值。

代码语言:javascript
复制
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]));

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63425495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档