相关疑难解决方法(0)

随机数组选择,无需在JavaScript中选择两次

所以,我试图从一个数组中选择一个随机条目,然后使它成为在选择每个条目之前不再选择特定条目.基本上,我不希望看到任何相同的条目,直到选择了数组中的所有条目.

所以如果这是我的阵列...

keywords =
[
 "ppc",
 "games",
 "advertise",
 "meta",
 "home",
 "gaming",
 "welcome"
]
var keyword = keywords[Math.floor(Math.random()*keywords.length)]
document.write(keyword);
Run Code Online (Sandbox Code Playgroud)

我不希望看到输出:

meta, advertise, home, meta, gaming, welcome, ppc, welcome
Run Code Online (Sandbox Code Playgroud)

因为meta在第二次被选中之后才被选中.我想看到更像的东西:

meta, advertise, gaming,ppc, welcome, home, games, advertise, ppc,
Run Code Online (Sandbox Code Playgroud)

因为在每个条目被随机选择之前没有多次选择任何条目.(第二个循环在第二个"广告"开始,以防你没有发现差异.

但是你可以从我上面发布的代码中看到,我不知道该怎么做.我已经看到了随机选择的条目实际上从数组中完全删除的示例,但这不是我想要做的.我只想要选择每个条目一次,然后重新启动进程.

有谁知道这个代码?

javascript arrays random

7
推荐指数
3
解决办法
7399
查看次数

用相同的级别对所有DIVS进行随机播放

我需要做的是:原始状态:

<div class="shuffledv">
<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
</div>
<div class="shuffledv">
<div id="4"></div>
<div id="5"></div>
<div id="6"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

Shuffle之后:

<div class="shuffledv">
<div id="2"></div>
<div id="3"></div>
<div id="1"></div>
</div>
<div class="shuffledv">
<div id="5"></div>
<div id="4"></div>
<div id="6"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

第一个div中的Divs停留在那里但是被洗牌,同样的类的第二个div也是如此.要在特定div中对div进行洗牌,我使用以下内容:

function shuffle(e) {               // pass divs inside #parent to the function
            var replace = $('<div>');
            var size = e.size();

            while (size >= 1) {
                var rand = Math.floor(Math.random() * size);
                var temp = e.get(rand);      // grab a random div from #parent …
Run Code Online (Sandbox Code Playgroud)

javascript random jquery shuffle

7
推荐指数
1
解决办法
7876
查看次数

如何在javascript中随机生成数字而不重复?

我想使用javascript随机生成0到4之间的每个数字,每个数字只能出现一次.所以我写了代码:

for(var l=0; l<5; l++) {
    var randomNumber = Math.floor(Math.random()*5);  
    alert(randomNumber)
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码重复了这些值.请帮忙.

javascript arrays random for-loop

6
推荐指数
3
解决办法
3万
查看次数

我想知道如何在打字稿中打乱数组

我想在打字稿中打乱数组

images:Symbols[] =
[this.seven,this.bell,this.watermelon,this.plum,this.lemon,this.cherry];
Run Code Online (Sandbox Code Playgroud)

我怎样才能洗牌呢?这里 images 是我的数组的名称,符号是数组的数据类型。

typescript

6
推荐指数
1
解决办法
3万
查看次数

如何打乱项目数组但允许权重影响顺序

我正在尝试编写一个 TypeScript 函数来打乱数组。

默认情况下,我希望洗牌顺序是随机的(但受种子影响)。(我已经可以使用这个功能了function random(seed: number): number:)

但是,我还想允许通过每个项目的重量来影响订单。

换句话说,我希望默认项目权重为 1,如果一个项目的权重为 10,那么它在打乱顺序中较早出现的可能性应该增加 10 倍。

我是否正确地思考过这个问题?这是一个合理的目标吗?

我认为我需要使用 Fisher-Yates 算法,但适应于与主数组长度相同的权重数组,并且主数组将被洗牌,以便较高权重的项目更有可能首先出现。

function removeDuplicates<T>(array: T[]): T[] {
  const uniqueValues = new Set<T>();
  return array.filter((item) => {
    if (!uniqueValues.has(item)) {
      uniqueValues.add(item);
      return true;
    }

    return false;
  });
}

function duplicateItemsBasedOnWeights<T>(array: T[], weights: number[]): T[] {
  const result = [];
  for (const [index, element] of array.entries()) {
    for (let position = 0; position < weights[index]; position++) {
      result.push(element);
    }
  }

  return result;
}

export function …
Run Code Online (Sandbox Code Playgroud)

arrays random shuffle typescript fisher-yates-shuffle

6
推荐指数
1
解决办法
328
查看次数

最有效的阵列洗牌器

如何以最有效的方式对数组的值进行洗牌?

每个元素只是一个包含HTML的字符串.

javascript arrays performance shuffle

5
推荐指数
1
解决办法
1343
查看次数

生成范围内的随机数而不重复javascript中的数字

可能重复:
生成1到100之间的8个唯一随机数
生成范围内的唯一数字(0 - X),保留历史记录以防止重复

我需要循环运行80次并生成0-79之间的随机数,但它不会重复已经生成的数字.
我怎样才能做到这一点?

javascript

5
推荐指数
1
解决办法
1万
查看次数

如何从JSON字典中按键检索随机JSON对象?

我有一个JSON对象,它由一长串其他JSON对象组成,这些对象有一些共同的属性,如:

var myData = { 
    "0291" : { "Firstname" : "Jeremy", "Surname" : "Dyson" },
    "0398" : { "Firstnname" : "Billy", "Surname" : "Bunter" },
    "6714" : { "Firstnname" : "Harry", "Surname" : "Peterson" },
    "9080" : { "Firstnname" : "Barry", "secondname": "Joe", "Surname" : "Mainwaring"}
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

我已经构建了一个html模板.使用JS,我想以随机顺序选择或迭代(随机选择+循环)数据{}中的对象,这样我就可以为每个访问者动态填写HTML.随机部分很重要,因此每个访问者可能会得到不同的数据.

简单的JavaScript或jQuery解决方案将在部署它的上下文中工作.


编辑:我实施的解决方案如下.

1.收集所有密钥:

var keyArray = Object.keys(myData);
Run Code Online (Sandbox Code Playgroud)

2. 随机播放功能:

function shuffle(o){ //v1.0
    for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = …
Run Code Online (Sandbox Code Playgroud)

javascript random jquery json iterator

5
推荐指数
1
解决办法
1万
查看次数

在Javascript/PHP中随机播放没有重复的随机数

我在这里搜索了一些答案,但它似乎不是我需要的东西,或者我只是不知道如何应用它.

我还没有开始任何代码,我只想着怎么做,我不知道该怎么做.我需要你的帮助.

我们假设我有一个由下面这些值组成的数组

[1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)

而且我需要在不重复最后结果的每个数字的位置的情况下将其洗牌.所以它可能会喜欢

[5,3,9,6,2,8,1,4,7]
Run Code Online (Sandbox Code Playgroud)

如果我再次洗牌它会是这样的

[4,7,2,1,8,3,6,9,5]
Run Code Online (Sandbox Code Playgroud)

等等.

好吧,我不知道是否与它有任何关联,但是,宁愿不使用rand().这个东西的任何解决方案?

javascript php arrays shuffle

5
推荐指数
1
解决办法
3213
查看次数

有没有办法随机循环对象的键?

我有一个类似的for循环

 for (var key in myObjectArray) {
   [code]
 }
Run Code Online (Sandbox Code Playgroud)

我想做同样的事情,除了每次输出的输出顺序.

有没有简单的方法呢?我可以创建一个单独的键数组,对它们进行排序,然后使用索引进行for循环...但这似乎很多工作而且效率很低.

javascript

5
推荐指数
1
解决办法
1029
查看次数