使用for循环简化javascript代码
Make javascript code simpler using for loop
我是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
(以及其中的所有内容)缓存到函数之外,因为它不会更改。
在函数中保留最后两行即可。
相关文章:
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 面向对象的Javascript代码在IE7中不起作用
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- JavaScript代码问题:我正在将对象转换为数组
- Javascript阻止其他Javascript代码
- JavaScript代码未正确检查ajax请求
- 如何调试Javascript代码或函数
- 为什么我在这个javaScript代码中使用NaN
- 将javascript代码转换为jquery代码时出错
- 如何从Objective-C代码中调用javascript代码
- 有什么工具可以轻松读取javascript代码吗
- 这个javascript代码是如何编写的
- 如何解密此javascript代码
- SIMPLE Javascript代码,用于显示谷歌电子表格中单个字段的数据
- HTML标记,包含带引号的JavaScript代码中的引号
- 如何在Win8Metro应用程序的Javascript代码中捕获自己的C#事件
- addEventListener的Javascript代码不工作!?(单击时打开放大的img)
- JavaScript代码无法在表单上呈现部分
- 以下 JavaScript 代码与 Facebook 相关
- 使用解析为javascript源的.php,如何使用条件语句将javascript代码封装在php括号之间