使用地图将每秒字符转换为大写

时间:2017-04-04 10:41:22

标签: javascript ecmascript-6

我有一个字符串,需要使用map函数将其转换为大写。它会是这样的:

var str = 'hello world how ya doing?';
function toUpperCase(str){
  return str.split('').map((v,i) =>  i%2 == 0 ? v[i].toLowerCase(): v[i].toUpperCase()).join('');
 }

console.log(toUpperCase(str));

但是当我运行它时,我会用大写的整个句子。

4 个答案:

答案 0 :(得分:2)

v参数实际上保存了数组中的每个字母,因此使用v[i]没有任何意义。



var str = 'hello world how ya doing?';

function toUpperCase(str) {
  return str.split('').map((v, i) => i % 2 == 0 ? v.toLowerCase() : v.toUpperCase()).join('');
}

console.log(toUpperCase(str));




我想你打算每隔字母转一次upperCase,但如果你真的关心整个字:



var str = 'hello world how ya doing?';

function toUpperCase(str) {
  return str.split(' ').map((v, i) => i % 2 == 0 ? v.toLowerCase() : v.toUpperCase()).join(' ');
}

console.log(toUpperCase(str));




答案 1 :(得分:1)

尝试以下方法:



var str = 'hello world how ya doing?';
var res = str.split(' ').map(function(v,i){
    return i%2 === 0 ? v.toLowerCase():v.toUpperCase()
});
console.log(res.join(' '));




答案 2 :(得分:1)

您正在从数组的值中读取一个字符。

val的参数.map(function(val, i)将是您的单词数组中的每个字符串。我修改了你的代码,希望你能清楚:



var str = 'hello world how ya doing?';

console.log(toUpperCase(str));

function toUpperCase(str){
  var words = str.split(' ');
  var uppers = words.map(function(val, i) {
    if(i%2 == 0)
      return (val + "").toLowerCase();
    else
      return (val + "").toUpperCase();
  });
  return uppers.join(' ');
}




答案 3 :(得分:0)

将给定的字符串拆分到数组中,然后使用 Array.prototype.map(),

然后,您可以使用toUpperCase()函数转换每隔一个字符。

看看下面的代码:

 "hello world how ya doing"
      .split("")
      .map((s, i) => (i % 2 != 0 ? s.toUpperCase() : s))
      .join("");

    OUTPUT: "hElLo wOrLd hOw yA DoInG"