2012-12-15 14 views
7

私の質問は非常にシンプルですが、私はそれを行う方法を理解できません。Jqueryはテキストエリアからランダムな単語を取得します

私はいくつかのテキストでテキストエリアを持っており、テキストから5つのランダムな単語を取得し、別の入力フィールド(自動)に入れたいと思います。私は特定の言葉になりたくない。ランダム5ワード。それでおしまい。ありがとう!

例:。

「Loremのイプサム嘆き座るAMET、consectetur adipisicing ELIT、 eiusmod tempor incididunt UT laboreらdoloreマグナaliquaユタenim広告 ミニムのveniam、QUISのnostrud exercitationのullamco laborisののNiSi UTを行うSED aliquip元のEA commodoのconsequat。 reprehenderitでvoluptate velit ESSE cillum dolore EU fugiatのNULLA pariaturでDuis auteのirureの悲しみ。cupidatat非proident occaecat ExcepteurのSINT、 culpa QUIのofficiaのdeserunt mollitのアニメーション番号EST laborumでsunt。」

このテキストが書き込まれたときの入力フィールドです:ipsum、amet、veniam、velit、deserunt。

これは動作するはず
+1

何を試しましたか? – charlietfl

+0

これはかなりまっすぐです - > [** FIDDLE **](http://jsfiddle.net/dDmP8/) – adeneo

+0

これはhttp://jsfiddle.net/cwrxV/の仕事ですが、私のサイトそれは動作しません!何が問題なのですか、それを理解するのを助けてください。以前の投稿をありがとう。 私のHTMLコードはjsfiddleにペーストしたものと同じですが、のjqueryコードを外部のjsファイルのからロードしています。結果は同じです.../ –

答えて

4

これは、作業の流れのための私の提案です:

  1. 取得テキストエリアからの単語
  2. 重複を削除します
  3. 反復配列(重複を避ける)ワードを取得し、アレイから削除

例コード:jsFiddle

+0

+1本当にきれいです –

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(" ")); 

EDIT:重複を防ぐために、あなたは以下を使用することができます。

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

は正しいようですが、重複を許可しています。 –

+0

配列にすでにその文字列が含まれているかどうかを確認し、indexOf –

+0

と重複しないようにコードを修正してください。 – WebStakker

1

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): 

実施例より短い:

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 
関連する問題