<br> <br> <br> <br>返回首页随机/混乱的字母

时间:2014-07-01 14:22:25

标签: javascript jquery random split shuffle

我试图改变话语。我想用各自的字母表来首先洗牌。目前它正在以第二个字母改组第一个..

我想分开单词&amp; shuffle“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());

我尝试通过下面的代码拆分,但之后它只拆分&amp;洗牌不是字母。

var a = this.split(" "),
return a.join(" ");

Jsfiddle链接:http://jsfiddle.net/9L8rs/1/ 请建议我该怎么做。

3 个答案:

答案 0 :(得分:6)

只需将字符串拆分为单词,然后分别将单词改为单词:

"First Second".split(' ').map(function(w) { return w.shuffle(); }).join(' ');

此处.split.map polyfill可能适用于旧浏览器)方法可以提供帮助。

DEMO: http://jsfiddle.net/9L8rs/2/

答案 1 :(得分:2)

首先尝试拆分传入的字符串:

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

答案 2 :(得分:1)

我刚刚添加了一个函数shuffleWords,它在单词上分开并在每个单词上调用你的shuffle函数。恩。 a[i] = a[i].shuffle();

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

    for (var i = 0; i < n; i++) {
        a[i] = a[i].shuffle();
    }
    return a.join(" ");
}

查看更新后的jsfiddle