使用for循环简化javascript代码

Make javascript code simpler using for loop

本文关键字:javascript 代码 for 循环 使用      更新时间:2023-09-26

我是javascript的新手,所以我的问题可能看起来是主要的。如何使用for循环使此代码更加简单,减少重复:

Fiddle

SortingPageAudio.prototype.cardAudios = function (cardNumber) {
    var page = tabs.page;
    var card1Audio = page.card1Audio;
    var card2Audio = page.card2Audio;
    var card3Audio = page.card3Audio;
    var card4Audio = page.card4Audio;
    var card5Audio = page.card5Audio;
    var card6Audio = page.card6Audio;
    var FRcard1Audio = card1Audio.replace("e_", "f_");
    var FRcard2Audio = card2Audio.replace("e_", "f_");
    var FRcard3Audio = card3Audio.replace("e_", "f_");
    var FRcard4Audio = card4Audio.replace("e_", "f_");
    var FRcard5Audio = card5Audio.replace("e_", "f_");
    var FRcard6Audio = card6Audio.replace("e_", "f_");
    playAudio.stopAudioPlaying();
    if (cardNumber == '0') {
        (router.getLanguage() == 'french' ? playAudio.playFiles(FRcard5Audio) : playAudio.playFiles(card5Audio));
    } else if (cardNumber == '1') {
        (router.getLanguage() == 'french' ? playAudio.playFiles(FRcard4Audio) : playAudio.playFiles(card4Audio));
    } else if (cardNumber == '2') {
        (router.getLanguage() == 'french' ? playAudio.playFiles(FRcard3Audio) : playAudio.playFiles(card3Audio));
    } else if (cardNumber == '3') {
        (router.getLanguage() == 'french' ? playAudio.playFiles(FRcard2Audio) : playAudio.playFiles(card2Audio));
    } else if (cardNumber == '4') {
        (router.getLanguage() == 'french' ? playAudio.playFiles(FRcard1Audio) : playAudio.playFiles(card1Audio));
    } else if (cardNumber == '5') {
        (router.getLanguage() == 'french' ? playAudio.playFiles(FRcard6Audio) : playAudio.playFiles(card6Audio));
    }
};

在不使用for循环的情况下,您可以简单地创建一个对象。

SortingPageAudio.prototype.cardAudios = function (cardNumber) {    
    var rel = {
        '0': [tabs.page.card5Audio.replace("e_", "f_"), tabs.page.card5Audio],
        '1': [tabs.page.card4Audio.replace("e_", "f_"), tabs.page.card4Audio],
        '2': [tabs.page.card3Audio.replace("e_", "f_"), tabs.page.card3Audio],
        '3': [tabs.page.card2Audio.replace("e_", "f_"), tabs.page.card2Audio],
        '4': [tabs.page.card1Audio.replace("e_", "f_"), tabs.page.card1Audio],
        '5': [tabs.page.card6Audio.replace("e_", "f_"), tabs.page.card6Audio]
    };
    playAudio.stopAudioPlaying();
    router.getLanguage() == 'french' ? playAudio.playFiles(rel[cardNumber][0]) : playAudio.playFiles(rel[cardNumber][1]);
};

以下是我的操作方法:

SortingPageAudio.prototype.cardAudios = function (cardNumber) {
    var langs = {
        french:{},
        english:{}
    };
    var en = langs.english;
    var fr = langs.french;
    var audio;
    for(var i = 1, max = 6; i <= max; i += 1){
        audio = tabs.page['card' + i + 'Audio'];
        en['audio' + i] = audio;
        fr['audio' + i] = audio.replace('e_', 'f_');
    }
    playAudio.stopAudioPlaying();
    playAudio.playFiles(langs[router.getLanguage()]['audio' + ((5 - cardNumber) || 6)];
};

但是,也许您应该将变量langs(以及其中的所有内容)缓存到函数之外,因为它不会更改。

在函数中保留最后两行即可。