0

希望你能帮忙,我有趣的项目快完成了,但我还有一个最后的错误要修复。

我有一个数组,可以将一组值打乱,然后将它们吐出到随机段落中。问题是,当我转储这些打乱的单词时,有些单词会被多次调用,而我需要每个值只打印一次。

$("#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

工作演示 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 回答
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 回答