我正在研究Codewars kata,但遇到以下问题:取一个仅由单词和空格组成的字符串,并将单词中每个偶数索引的字母转换为大写。我提出了一个有效但不涉及字符串/数组方法或回调的解决方案:
function toWeirdCase(string) {
var weirded = "";
var indexCounter = 0;
for (var i = 0; i < string.length; i++) {
var character = string[i];
if (indexCounter % 2 === 0 && character != " ") {
weirded += character.toUpperCase();
indexCounter++;
} else if (character != " ") {
weirded += character;
indexCounter++;
} else {
weirded += " ";
indexCounter = 0;
}
}
return weirded;
}
不优雅,但有效。然后我看了最佳实践&#34;解决方案,非常优雅:
function toWeirdCase(string) {
return string.split(' ').map(function(word) {
return word.split('').map(function(letter, index) {
return index % 2 == 0 ? letter.toUpperCase() : letter.toLowerCase()
}).join('');
}).join(' ');
}
对于那些提出类似后者的解决方案的人来说,问题是:你的思维过程是什么?你如何将问题分解为步骤,并知道如何分阶段/排序方法,以便你提出这种解决方案?
如果它现在是你的第二天性,你会不会记得&#34; a-ha&#34;在你第一次学习的时候帮助你培养解决回调的技能?
TL; DR:我从概念上理解回调,但想知道如何使用有条理的方法处理具有回调解决方案的问题。