0

あなたが助けてくれることを願っています。私の楽しいプロジェクトはもうすぐ終わりますが、修正すべき最後のバグが 1 つあります。

一連の値をシャッフルしてランダムな段落に吐き出す配列があります。問題は、これらのシャッフルされた単語をダンプすると、いくつかが何度も呼び出され、各値を一度だけ印刷する必要があることです。

$("#generatebutt").click(function() {

var dumpStr = "";
var lengthOfParagraph = $('#length').val();
var numberOfParagraph = $('#numberpara').val();

for (var i = 0; i < numberOfParagraph; i++) {
    ShuffleWords(melbArray);

    for (var j = 0; j < lengthOfParagraph; j++) {
        var theWords = melbArray[j];                 
        if(j == 0){
            dumpStr += theWords.charAt(0).toUpperCase();
            theWords = theWords.substring(1)
        }
        else {
        }
        if(j % 5 == 1){
            dumpStr += theWords + ", ";
        }
        else {
            dumpStr += theWords + " ";
        }
    }
    dumpStr = $.trim(dumpStr);
    dumpStr += ".<br/><br/>";
}
$("#dump").html(dumpStr);

本当にありがとう!

リー

4

2 に答える 2

0

まず、次のようにして(関数の先頭で)配列のクローンを作成します。

var newArray = melbArray.slice();

次に、新しい配列を使用して、参照するときに配列から値を削除します。変化する:

var theWords = melbArray[j];

var theWords = newArray.splice( j, 1 )[0];

この.splice()メソッドは、インデックスのエントリを削除し、jそれだけを含む新しい配列を返します([0]要素自体を返すためにを追加しました)。この操作の後、古い配列にはこの値が含まれなくなります。

于 2012-07-23T11:15:05.663 に答える
0

ワーキングデモ http://jsfiddle.net/Ehqzj/1/

必要なのは、配列から一意の単語を取得する方法だけだと思います。その場合、これが役立つはずです。それ以外の場合は、HTML もフリックしてください。それ以外の場合は、一意の値のみを取得します。

それがあなたのニーズに合うことを願っています:)

コード

array.filter を使用してトリックを実行できます-

var a=["hulk","hulk","thor","thor","ironman","hawk","hawk"];

var unique=a.filter(function(itm,i,a){
    return i==a.indexOf(itm);
});

alert(unique);


// Return set will be **Unique** words only: hulk,thor,ironman,hawk
于 2012-07-23T11:09:54.963 に答える