toa*_*oad 3 javascript css random dom-manipulation
我知道,有点奇怪的要求.但是我一直在寻找解决方案.这是我正在寻找的效果:
var myString = "Hello I am randomly capitalized"
Run Code Online (Sandbox Code Playgroud)
期望的功能结果:
hElLO i aM rAnDOmlY caPiTAlizED
Run Code Online (Sandbox Code Playgroud)
我想这最好用javascript数组以这种或那种方式完成.只是寻找一些创意.谢谢!
这是一种方式
myString.split('').map(function(c){
return c[Math.round(Math.random())?'toUpperCase':'toLowerCase']();
}).join('');
Run Code Online (Sandbox Code Playgroud)
您可以将此作为原型方法添加到字符串对象上,以便在需要时轻松访问:
String.prototype.toRandomCase = function() {
return this.split('').map(function(c){
return c[Math.round(Math.random())?'toUpperCase':'toLowerCase']();
}).join('');
}
Run Code Online (Sandbox Code Playgroud)
然后访问
console.log(myString.toRandomCase());
Run Code Online (Sandbox Code Playgroud)
String.split
method用于将字符串拆分为单个字符数组.Array.map
功能被使用.这将采用一个回调函数,该函数应用于数组中的每个项目,并返回一个新的结果数组,其中包含map函数返回的每个值.Math.round(Math.random())
用于随机性toLowerCase
或toUpperCase
Math.Round(Math.random())?'toLowerCase':'toUpperCase'
c[<ternary here>]()
Array.join
的结果map
将结果数组连接回字符串.RobG的答案比我的更有效(请提出他的回答)
String.prototype.toRandomCase = function() {
return this.toLowerCase().split('').map(function(c){
return Math.random() < .5? c : c.toUpperCase();
}).join('');
}
Run Code Online (Sandbox Code Playgroud)
如果有人有进一步改进的建议 - 请评论或编辑答案的这一部分
好吧,基于 Joel 的回答\xe2\x80\xa6
\n\nmyString.toLowerCase().split('').map(function(c){\n return Math.random() < .5? c : c.toUpperCase();\n}).join('');\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
107 次 |
最近记录: |