Javascript 拆分单词和;混叠字母

Javascript 拆分单词和;混叠字母,javascript,jquery,random,split,shuffle,Javascript,Jquery,Random,Split,Shuffle,我正试着洗牌。我想先用它各自的字母表洗牌。目前,它正在用第二个字母替换第一个字母 我想拆分单词并洗牌“sFtir Seocdn” 我试着按下面的代码进行拆分,但它只拆分和洗牌单词而不是字母 var a = this.split(" "), return a.join(" "); JSIDLE链接: 请建议我该怎么做。只需将字符串拆分为单词,并将字母分别混洗为单词: "First Second".split(' ').map(function(w) { return w.shuffle(); }

我正试着洗牌。我想先用它各自的字母表洗牌。目前,它正在用第二个字母替换第一个字母

我想拆分单词并洗牌“sFtir Seocdn”

我试着按下面的代码进行拆分,但它只拆分和洗牌单词而不是字母

var a = this.split(" "),
return a.join(" ");
JSIDLE链接:
请建议我该怎么做。

只需将字符串拆分为单词,并将字母分别混洗为单词:

"First Second".split(' ').map(function(w) { return w.shuffle(); }).join(' ');
这里和(可能适用于旧浏览器)方法可以有所帮助


演示:

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

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

我刚刚添加了一个函数shuffleWords,它对单词进行分割,并对每个单词调用您的shuffle函数。例如
a[i]=a[i].shuffle()

String.prototype.shuffleWords=函数(){
var a=此.split(“”),
n=a.长度;
对于(变量i=0;i

查看更新的

您需要对单个单词调用shuffle…首先用空格分割,然后循环这些结果,然后用
string.split(“”)
分割。然后进行洗牌和加入除了VisioN的答案之外,还有一个解决方案,将所有内容都保存在
shuffle
中(因此使用
shuffle
的代码不必担心文字):。但我想这取决于你希望如何使用它。我没有投你反对票,但我希望有人不喜欢你的
forEach
——比如使用
map
方法。谢谢@VisioN,我更新了代码,使它更“mappy”:
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());
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(" ");
}