Javascript 如何对回调进行抽象?

Javascript 如何对回调进行抽象?,javascript,callback,Javascript,Callback,我正在处理一个有以下问题的字符串:获取一个仅由单词和空格组成的字符串,然后将单词中每个索引为偶数的字母转换为大写。我提出了一个可行但不涉及字符串/数组方法或回调的解决方案: function toWeirdCase(string) { var weirded = ""; var indexCounter = 0; for (var i = 0; i < string.length; i++) { var character = string[i];

我正在处理一个有以下问题的字符串:获取一个仅由单词和空格组成的字符串,然后将单词中每个索引为偶数的字母转换为大写。我提出了一个可行但不涉及字符串/数组方法或回调的解决方案:

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;
}
对于那些提出类似于后者的解决方案的人来说,问题是:你的思维过程是什么?你如何将问题分解成几个步骤,并知道如何对方法进行阶段/排序,从而得出此类解决方案

如果这是你现在的第二天性,你是否还记得在你第一次学习时帮助你发展应对回调技能的“哈哈”时刻


TL;DR:我从概念上理解回调,但想知道如何使用系统的方法处理具有回调解决方案的问题。

使用正则表达式如何?我试着思考我需要什么,以及我需要做什么。然后我倒着干。在本例中,我需要字符串中的单词,因此我认为“我需要一个单词数组”。然后我考虑下一步,似乎我需要一个字符数组,我需要知道每个字符的索引来有条件地转换它。[]地图给了我一个值和一个索引,答对了。我首先在控制台中敲打一个字符串文字词,直到我在一个具有(char,i)签名的可重用函数中完成了改变字符的步骤。一旦这样做了,关于字符串到单词数组的部分就很容易了……你不需要考虑“如何通过回调来解决这个问题”。你需要思考。它只是映射到一个句子中的单词,每个单词映射到单词中的字母,当索引为偶数时,每个单词都将其大写。
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(' ');
}