如何抽象回调?

时间:2014-12-16 03:39:32

标签: javascript callback

我正在研究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:我从概念上理解回调,但想知道如何使用有条理的方法处理具有回调解决方案的问题。

0 个答案:

没有答案