7

我的问题很简单,但我不知道该怎么做。

我有一个带有一些文本的文本区域,我想从文本中获取 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 voluptate "

包含何时写入此文本的输入字段让我们说:ipsum、amet、veniam、velit、deserunt。

4

3 回答 3

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);
}
于 2012-12-15T14:36:30.867 回答
4

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

  1. 从 textarea 中获取单词
  2. 删除重复项
  3. 迭代数组获取单词并将其从数组中删除(避免重复)

示例代码:

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中的工作示例

于 2012-12-15T14:50:50.153 回答
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
于 2012-12-15T15:15:41.813 回答