首页 文章

Jquery从textarea获取随机单词

提问于
浏览
7

我的问题很简单,但我无法弄清楚如何做到这一点 .

我有一个带有一些文本的textarea,我想从文本中获取5个随机单词并将它们放在另一个输入字段中(自动) . 我不想成为具体的话 . 随机5个字 . 而已 . 谢谢!

例:

“Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.Duis aute irure dolor in reprehenderit in在非常普通的情况下,在非常普通的情况下,在culpa qui officia deserunt mollit anim id est laborum . “

包含此文本写入时的输入字段,请说:ipsum,amet,veniam,velit,deserunt .

3 回答

  • 1

    这是我对工作流程的建议:

    • 从textarea获取单词

    • 删除重复项

    • 迭代数组获取单词并将其从数组中删除(避免重复)

    示例代码:

    var text = "Lorem ipsum ......";
    var words = $.unique(text.match(/\w+/mg));
    var random = [];
    
    for(var i=0; i<5; i++) {
        var rn = Math.floor(Math.random() * words.length);
        random.push( words[rn]);
        words.splice(rn, 1);
    }
    
    alert( random ):
    

    jsFiddle中的工作示例

  • 4

    这应该工作:

    var content = $("#myTextarea").val(),
        words = content.split(" ");
    
    var randWords = [],
        lt = words.length;
    
    for (var i = 0; i < 5; i++)
        randWords.push(words[Math.floor(Math.random() * lt)]);
    
    $("#otherField").val(randWords.join(" "));
    

    编辑:为防止重复,您可以使用以下内容:

    var nextWord;
    for (var i = 0; i < 5; i++)
    {
        nextWord = words[Math.floor(Math.random() * lt)];
        if (("|" + randWords.join("|") + "|").indexOf("|" + nextWord  + "|") != -1)
        {
            i--;
            continue;
        }
        randWords.push(nextWord);
    }
    
  • 4

    更短:

    var str = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt.';
    
    function rWords( t ) {
        for ( var i = 5, s = t.match( /(\d|\w|')+/g ), r = [] ; i-- ; r.push( s[ Math.random() * s.length | 0 ] ) );
        return r.join( ', ' ).toLowerCase();
    }
    
    console.log( rWords( str ) );
    > lorem, eiusmod, elit, dolor, do
    

相关问题