Javascript 随机化所有字符串字符的大小写
我知道这是个奇怪的要求。但我一直在寻找解决这个问题的方法。这就是我想要的效果:Javascript 随机化所有字符串字符的大小写,javascript,random,dom-manipulation,css,Javascript,Random,Dom Manipulation,Css,我知道这是个奇怪的要求。但我一直在寻找解决这个问题的方法。这就是我想要的效果: var myString = "Hello I am randomly capitalized" 期望的功能结果: hElLO i aM rAnDOmlY caPiTAlizED 我认为最好以这样或那样的方式使用javascript数组。只是在寻找一些有创意的想法。谢谢大家! 这里有一个方法 myString.split('').map(function(c){ return c[Math.round(M
var myString = "Hello I am randomly capitalized"
期望的功能结果:
hElLO i aM rAnDOmlY caPiTAlizED
我认为最好以这样或那样的方式使用javascript数组。只是在寻找一些有创意的想法。谢谢大家! 这里有一个方法
myString.split('').map(function(c){
return c[Math.round(Math.random())?'toUpperCase':'toLowerCase']();
}).join('');
如果需要,可以将其作为原型方法添加到字符串对象上,以便于访问:
String.prototype.toRandomCase = function() {
return this.split('').map(function(c){
return c[Math.round(Math.random())?'toUpperCase':'toLowerCase']();
}).join('');
}
然后通过
console.log(myString.toRandomCase());
对其工作原理的一点解释:
String.split
方法用于将字符串拆分为单个字符的数组Array.map
函数。它接受一个应用于数组中每个项的回调函数,并返回一个新的结果数组,其中每个值都由map函数返回Math.round(Math.random())
用于随机性toLowerCase
或toUpperCase
Math.Round(Math.random())?'toLowerCase':'toUpperCase'
map
函数调用的结果使用Array.join
方法将结果数组重新连接成字符串String.prototype.toRandomCase=function(){
返回此.toLowerCase().split(“”).map(函数(c){
返回Math.random()<.5?c:c.toUpperCase();
}).加入(“”);
}
如果有人对此有进一步改进的建议,请根据Joel的答案评论或编辑答案的这一部分
myString.toLowerCase().split('').map(function(c){
return Math.random() < .5? c : c.toUpperCase();
}).join('');
myString.toLowerCase().split(“”).map(函数(c){
返回Math.random()<.5?c:c.toUpperCase();
}).加入(“”);
请发布您尝试过的代码。太好了。让我来试一试。非常感谢。嗯-这对代码高尔夫来说是一件有趣的事情!您可以使用.5>
,而不是Math.round
,它的输入更少,函数调用也更少。非常适合人类。非常感谢你。在这个函数中有很多东西需要学习,不客气。我将为您编辑并添加它的工作原理:)
myString.toLowerCase().split('').map(function(c){
return Math.random() < .5? c : c.toUpperCase();
}).join('');