Jquery从textarea获取随机单词

时间:2012-12-15 14:31:45

标签: javascript jquery random input words

我的问题非常简单,但我无法弄明白该怎么做。

我有一个带有一些文本的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   微小的veniam,quis nostrud exercitation ullamco laboris nisi ut   aliquip ex ea commodo consequat。 Duis aute irure dolor in   代表性的velitate velit esse cillum dolore eu fugiat nulla   pariatur。 Excepteur sint occaecat cupidatat non proident,sunt in   culpa qui officia deserunt mollit anim id est laborum。“

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

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:4)

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

  1. 从textarea获取文字
  2. 删除重复项
  3. 迭代数组获取单词并将其从数组中删除(避免重复)
  4. 示例代码:

    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

    中的工作示例

答案 2 :(得分:1)

更短:

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