我正在尝试改组单词。我想先用它们各自的字母洗牌。目前,它正在将“First”与“Second”字母混排。

我想拆分单词并随机播放“sFtir Seocdn”。

String.prototype.shuffle = function () {
    var a = this.split(""),
        n = a.length;

    for (var i = n - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var tmp = a[i];
        a[i] = a[j];
        a[j] = tmp;
    }
    return a.join("");
}


alert("First Second".shuffle());

我尝试按以下代码拆分,但随后仅拆分和混排单词,而不是字母。
var a = this.split(" "),
return a.join(" ");

jsfiddle链接:http://jsfiddle.net/9L8rs/1/
请提出我该怎么办。

最佳答案

尝试先拆分传入的String:

String.prototype.shuffle = function() {
    return this.split(" ").map(function(word, i) {
        var a = word.split(""),
            n = a.length;

        for (var i = n - 1; i > 0; i--) {
            var j = Math.floor(Math.random() * (i + 1));
            var tmp = a[i];
            a[i] = a[j];
            a[j] = tmp;
        }

        return a.join("");
    }).join(" ");
}

alert("First Second".shuffle());

Updated JSFiddle

09-27 13:55
查看更多