Javascript 拆分单词和;混叠字母
我正试着洗牌。我想先用它各自的字母表洗牌。目前,它正在用第二个字母替换第一个字母 我想拆分单词并洗牌“sFtir Seocdn” 我试着按下面的代码进行拆分,但它只拆分和洗牌单词而不是字母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(); }
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(" ");
}