我有一个字符串,需要使用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));
但是当我运行它时,我会用大写的整个句子。
答案 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"