簡體   English   中英

如何從 javascript 中沒有重復的數組中提取隨機字符串?

[英]how to pull random strings from an array with no repeats in javascript?

我對 javascript 非常陌生,並且正在制作一個在瀏覽器中運行的隨機生成器,我想我已經弄清楚了大部分事情,除了我無法弄清楚如何確保隨機字符串之間沒有重復。

我在想也許從數組中刪除第一個結果,所以第二個不能選擇它(最好,因為在最終代碼中,會有多個變量從多個不同配置中的同一個數組中提取,並且從這個中提取了幾個 arrays方式,但我不知道這是否可能?),或者可能讓第二個重新運行,直到它得到一些獨特的東西。

但是,我,呃,不知道如何做這兩件事,並且沒有多少谷歌搜索給我任何相關和足夠理解的東西(作為初學者)讓我成功申請^^; 有什么幫助嗎?

這是我的代碼的簡化版本,僅包含相關內容,如果我需要提供更多內容,請告訴我

 <button onclick="random()">GENERATE</button> <p id="text"></p> <script> var canids = ["dog", "wolf", "coyote", "jackal", "fox", "wild dog", "raccoon dog", "dire wolf", "dingo"] function random() { var canids1 = canids[(Math.random() * canids.length) | 0] var canids2 = canids[(Math.random() * canids.length) | 0] /*i want it to be impossible for this to be the same as canids1*/ document.getElementById('text').innerHTML = canids1 + " " + canids2; } </script>

這是一個基本的解決方案。 您可以生成第二個 candis 的索引,而它等於第一個。

 <button onclick="random()">GENERATE</button> <p id="text"></p> <script> var canids = ["dog", "wolf", "coyote", "jackal", "fox", "wild dog", "raccoon dog", "dire wolf", "dingo"] function random() { var canids_index1 = (Math.random() * canids.length) | 0 var canids_index2 = (Math.random() * canids.length) | 0 while(canids_index1 === canids_index2) canids_index2 = (Math.random() * canids.length) | 0 var canids1 = canids[canids_index1] var canids2 = canids[canids_index2] /*i want it to be impossible for this to be the same as canids1*/ document.getElementById('text').innerHTML = canids1 + " " + canids2; } </script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM