首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确保不重复随机分配的属性。

确保不重复随机分配的属性。
EN

Stack Overflow用户
提问于 2015-05-04 23:59:48
回答 2查看 43关注 0票数 1

我有这样的情况。页面上有六个不同位置的占位符。我有六个不同的单词,每个单词应该被随机分配到一个占位符。

我想要实现的是没有重复的单词,例如占位符nr.3得到"Word-1“和占位符nr.6得到"Word-1”。

这是我所使用的JavaScript,用于将单词随机分配给占位符,在我的例子中是段落元素。

代码语言:javascript
复制
var word_1 = $('#main').append('<p class="word word-1"></p>'),
word_2 = $('#main').append('<p class="word word-2"></p>'),
word_3 = $('#main').append('<p class="word word-3"></p>'),
word_4 = $('#main').append('<p class="word word-4"></p>'),
word_5 = $('#main').append('<p class="word word-5"></p>'),
word_6 = $('#main').append('<p class="word word-6"></p>');

var pos_1 = $('.word-1').css({'left' : '0', 'right' : '0', 'top' : '48%'})
var pos_2 = $('.word-2').css({'left' : '-400px', 'right' : '0', 'top' : '58%'})
var pos_3 = $('.word-3').css({'left' : '0', 'right' : '-400px', 'top' : '36%'})
var pos_4 = $('.word-4').css({'left' : '0', 'right' : '-320px', 'top' : '61%'})
var pos_5 = $('.word-5').css({'left' : '-500px', 'right' : '0', 'top' : '36%'})
var pos_8 = $('.word-6').css({'left' : '-320px', 'right' : '0', 'top' : '46%'})

var words = ['word-1', 'word-2', 'word-3', 'word-4', 'word-5', 'word-6'];

$('.word').each(function(){
classIndex = Math.floor(Math.random() * words.length);
$(this).text(words[classIndex]);
})

这里有一个小提琴,它说明了我想要达到的目标。http://jsfiddle.net/somkchza/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-05 00:31:59

只需在循环中添加:words.splice(classIndex,1);以删除所使用的单词:

代码语言:javascript
复制
$('.word').each(function(){
    classIndex = Math.floor(Math.random() * words.length);
    $(this).text(words[classIndex]);
    words.splice(classIndex,1);
})
票数 2
EN

Stack Overflow用户

发布于 2015-05-05 00:24:47

您需要的是对数组进行洗牌,然后将每个数组分配给单词。

按照你现在的做法,你会随机挑出一个单词,你可能会得到两次相同的单词。你不需要那个。

如果你洗牌数组-你只得到每个单词一次,但洗牌它得到随机顺序。然后将每一个分配到您的.word位置

我不是在为您解决这个问题,也不是为您编写洗牌算法,而是尝试如下:

代码语言:javascript
复制
var words = ['word-1', 'word-2', 'word-3', 'word-4', 'word-5', 'word-6'];

# google how to shuffle an array and put that function somewhere
# eg https://css-tricks.com/snippets/javascript/shuffle-array/
words = Shuffle(words);

# they are already random - so now just assign each one to a place
$('.word').each(function(){
   $(this).text(words[classIndex]);
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30042048

复制
相关文章

相似问题

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