javascript - 更高效的 JS 大小写交换

标签 javascript arrays for-loop

我是 JS 新手。我将参加 JS 训练营并做一些课前作业。下面是一个 coderbyte 解决方案。请求是:

创建一个函数,在传递字符串时将交换字符串的大小写。

我的解决方案:

function swapCase(someStr){
   var alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"];

  var upperAlphabet = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"];

  var idxLower = [];
  var idxUpper = [];

  someArray = someStr.split("");

  //Find out which indexes are lower case
  for(var i = 0; i<someArray.length; i++){
    for(var j = 0; j<alphabet.length; j++){
      if(someArray[i] === alphabet[j]){
        idxLower.push(i);
      }
    }
  }

  //find out which indexes are upper case
  for(var k = 0; k<someArray.length; k++){
    for(var m = 0; m<upperAlphabet.length; m++){
      if(someArray[k] === upperAlphabet[m]){
        idxUpper.push(k);
      }
    }
  }

  //convert lower cases to upper
  for(var n = 0; n<idxLower.length; n++){
    for(var p = 0; p<someArray.length; p++){
      if(idxLower[n] === p){
        someArray[p] = someArray[p].toUpperCase();
      }
    }
  }
    //convert upper cases to lower
  for(var q = 0; q<idxUpper.length; q++){
    for(var r = 0; r<someArray.length; r++){
      if(idxUpper[q] === r){
        someArray[r] = someArray[r].toLowerCase();
      }
    }
  }
  var newStr = someArray.join("");
  console.log(newStr); 
}
swapCase("Hello World Sup Bro My Name iS Richard!");

//returns hELLO wORLD sUP bRO mY nAME Is rICHARD!

我知道这是 Eloquent 对立面。谁能使用 JS 基础知识来帮助我理解如何以更简洁的方式进行此练习?

最佳答案

听起来像:对于每个字符,如果它是下位,我想将其设置为上位,如果它是上位,我想将其设置为下位。

这很简单:

function swapCase(str) {
  var out = '';
  for (var i=0; i<str.length; i++) {
    // It's lower, or non-A-Z
    if (str[i].toLowerCase() == str[i]) {
      out += str[i].toUpperCase();
    }
    else {
      out += str[i].toLowerCase();
    }
  }
  return out;
}

alert(swapCase('Hello World Sup Bro My Name iS Richard!'));

(用 fiddle 来证明这一点。]( http://jsfiddle.net/rudiedirkx/m4mhsyuz/ )

关于javascript - 更高效的 JS 大小写交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34095278/

相关文章:

java - 将数组的输出格式化为列

c++ - C++ 11-修改结构 vector 中的结构成员

linux创建目录并将相应的文件移动到目录中

javascript - 在基本的 javascript for 循环中,++i 和 i++ 有什么区别,我应该使用哪个

javascript - 为什么 Javascript 不能给出比 python 更准确的科学计算结果

javascript - WinJS 中的异步问题

C++ 采用华氏温度数组,将它们转换为摄氏温度,然后将摄氏温度添加到新数组中

java - java中通过方法初始化2dim数组

javascript - 动态样式组件标签名称

javascript - D3 更新不更新新数组