随机化而不重复多次

Randomizing without duplicating multiple times

本文关键字:随机化      更新时间:2023-09-26

我有以下任务要执行。我得到一个字符串,我必须反过来写,并且随机化单词,以形成5个不同的字符串。我已经设法将字符串反向写入并随机化单词,但我无法做到5次。代码如下:

var x = "Lorem ipsum dolor sit amet";
var wordsArray = x.split(" ");

function wordsReverse(allWords){
    var otherArray = [];
    for ( var i = allWords.length-1; i >= 0; i--) {
        otherArray.push(allWords[i]);
    }
    return otherArray;
}
function createRandomText(text){
    var randomArray = [];
    var randomText = null;
    for ( var j = 0; j < 5; j++) {
        for ( var k = 0; k < text.length; k++) {
            randomText = text[Math.floor(Math.random()*text.length)];
            if ( text[randomText] === undefined ) {
                randomArray.push(randomText);
                text[randomText] = true;
            }
        }   
    }
    return randomArray;
}
console.log(wordsReverse(wordsArray).toString().replace(/',/g, ' '))
console.log(createRandomText(wordsArray).toString().replace(/',/g, ' '))

感谢您的帮助

循环直到得到所有5个随机字符串。如果字符串不在数组中,则返回。

var randomArray = [];
While(randomArray.length != 5){
   wordsReverse(wordsArray).toString().replace(/',/g, ' ');
   var str = createRandomText(wordsArray).toString().replace(/',/g, ' ');
   if(randomArray.indexOf(str) < -1) {
     randomArray.push(str);
   }
}