想法是: 单击按钮以将标题替换为数组的唯一字符串 问题在于,我以前像这样使用过数组的字符串:

headlines = new Array("Good", "Bad", "Ugly", "Random Headline");
var randomNumberBefore = 4;
alert (headlines[randomNumberBefore]);

但是我不想再次显示相同的标题,这就是为什么要关键检查实际索引randomNumberBefore是否与新索引randomNumber 不同的数字 以下功能对我来说很有意义,但有时它返回相同的数字,导致标题被其自身替换,并且用户未发现任何更改。

function randomNumberByRange (range, number) {
    var r;
    do {
        var r = Math.floor(Math.random() * range);
    } while (r == number);
    return r;
}

$(document).on('click','.nextquote' , function() {
    var randomNumber = randomNumberByRange( headlines.length, randomNumberBefore);
    var nextHeadline = headlines[randomNumber];

    $(".bannertext").text(nextHeadline);
    console.log(nextHeadline);

});

有什么想法可以使每次点击获得唯一的标题

这是我的初学者

-

这是最后的小提琴

#1楼 票数:2 已采纳

您忘记将旧值分配给randomNumberBefore;

var randomNumber = randomNumberByRange( headlines.length, randomNumberBefore);

randomNumberBefore = randomNumber;

PS:有一种方法可以使randomNumberByRange函数的性能更高:

function randomNumberByRange (range, number) {
    var r = Math.floor(Math.random() * (range-1));
    if(r >= number)r++;
    return r;
}

但是,如果您有很多标题,那么您的功能就足够好了(因为碰撞概率随列表中项目的数量而下降)

#2楼 票数:1

如果您不想重复,只需从数组中删除使用的元素。

var h = new Array("Good", "Bad", "Ugly", "Random Headline");
while (h.length > 0) {
    var i = Math.floor(Math.random() * h.length);
    var t = h.splice(i, 1);
    console.log(t);
}

  ask by p2or translate from so

未解决问题?本站智能推荐:

1回复

Javascript/jQuery 检查数组中的字符串 [重复]

这个问题在这里已经有了答案: 根据值列表检查变量相等性(15 个回答) 6 个月前关闭。 我有一个有效的 jQ
7回复

如何使用jQuery搜索JavaScript数组中的字符串? [重复]

这个问题在这里已有答案: 如何访问和处理嵌套对象,数组或JSON? 22个答案 我有一个JavaScript数组: 我需要找到该类的次数和它的数组键,所以我使用: 然后我用: 但这也是错误的。 我该如何解决这个问题? 从这个数组我想
6回复

从字符串中取出随机字母

我想从字符串中删除3个RANDOM字母。 我可以使用诸如substr()或slice()函数之类的方法,但它不会让我取出随机字母。 这是我现在拥有的演示。 http://jsfiddle.net/euuhyfr4/ 任何帮助,将不胜感激!
3回复

如何在JavaScript中获取字符串数组?

我从服务器获取标签名称列表,并用data填充getedTags 。 我的问题是data是字符串类型,而它必须是数组,数据值: "["HTML","CSS"]"但我需要["HTML","CSS"]我如何获取数组字符串并添加到getedTags变量?
4回复

jQuery从字符串数组中选择一个随机值

我知道在PHP中这是怎么做的,但在javascript数组中很奇怪。 所以我有一组图像过渡,其效果使用缓动方程。 对于某些效果,我想从多个值的数组中选取一个随机值: 就像是: easing: randomFrom(array('easeOutElastic', 'easeOut
1回复

单击按钮时显示数组(从字符串转换)

我有此代码段,旨在单击“按钮”时返回一个数组,转换为数组的字符串来自$('#text-area').text(); 单击“按钮”后,请帮助我返回#text-ent的数组。 JS
5回复

jQuery - 从字符串数组中删除重复项[重复]

可能重复: 在JavaScript数组中查找重复值的最简单方法 关于字符串数组的jQuery.unique 我试图通过广度优先搜索获得邻居列表(具体来说: Block'd中相同颜色的邻居球的索引 )我的function getWholeList(ballid)返回一个像
2回复

jQuery中字符串内部的字符串数组

我需要给字符串里面的字符串数组。 我的数组将是["2", "3"] 我需要的: 实际输出: 值的双引号删除并使其成为字符串数组。 如何实现呢? 提前致谢 :)