我的问题非常简单,但我无法弄明白该怎么做。
我有一个带有一些文本的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。
答案 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)
这是我对工作流程的建议:
示例代码:
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 ):
中的工作示例
答案 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