Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 随机化所有字符串字符的大小写_Javascript_Random_Dom Manipulation_Css - Fatal编程技术网

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函数返回
  • 在map函数中
  • Math.round(Math.random())
    用于随机性
  • 其结果与三元运算符一起使用,以获得
    toLowerCase
    toUpperCase
    Math.Round(Math.random())?'toLowerCase':'toUpperCase'
  • 三元运算符的结果通过对字符进行数组延迟来访问相关函数属性,然后调用<代码>c[]()
  • 最后,它对
    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('');