删除方法中的冗余代码
remove redundant code in method
我使用以下代码,这很有效,但在阅读了JS之后(我很新),我注意到了3件事。
-
在方法开始时使用返回
-
使用
ternary
条件(不确定在这种情况下如何使用) -
使用
reduce
(对此不确定,但可能不是forEach)
可以在下面的代码中使用它吗?
get: function(document, oData) {
var self = this;
var oInnerHTML;
if (oData) {
var oParsedHTML = this._parseHtml(document);
oInnerHTML = oParsedHTML;
oData.forEach(function(configEntry) {
oInnerHTML = self._routeExtentionTypes(configEntry, oInnerHTML);
});
oInnerHTML = this._convertBackToHtml(oInnerHTML);
} else {
oInnerHTML = document;
}
return oInnerHTML
}
代码所做的是
- 获取HtmlString并对其进行解析
- 根据cofigEntry和原始HTML对其进行扩展
- 配置条目完成后,它会转换回HTML
在方法的开头使用return
当您的对象准备好具有所需值时,请使用return。尽早返回是很好的做法。这样,执行和评估的代码数量最少。
在上面的示例"oInerHTML"中,变量在满足基于值的特定条件的情况下做好准备,因此在这种情况下,只要对象/变量准备好了值,就可以返回它。
使用三元条件
当你根据一个简单的条件为变量赋值,或者你做出多个结果非常简短的决策时,三元运算符很常见。例如
x ? y: z
在上面的例子中,三元运算符可以如下使用:(请执行代码并仔细检查)
get: function(document, oData) {
var self = this;
return (oData) ? document : get_oInnerHTML(oData);
}
function get_oInnerHTML (oData){
var oInnerHTML;
oData.forEach(function(configEntry) { oInnerHTML = self._routeExtentionTypes(configEntry, this._parseHtml(document)); });
return oInnerHTML;
}
上面的代码在三元条件下使用了一个函数。由于有许多行需要在条件中执行,所以我为它创建了单独的函数并在条件中使用。
使用reduce
reduce()方法对累加器和数组的每个值(从左到右)应用一个函数,将其减少为一个值。
[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, currentIndex, array) { return previousValue + currentValue; });
我认为,您可以在Array#reduce()
中尝试。
基本上,减少就是做你想做的事。它取一个起始值,根据需要迭代一个数组并返回一些值。
前一个代码
var oParsedHTML = this._parseHtml(document);
oInnerHTML = oParsedHTML;
oData.forEach(function(configEntry) {
oInnerHTML = self._routeExtentionTypes(configEntry, oInnerHTML);
});
转换为
this._convertBackToHtml(oData.reduce(function (r, configEntry) {
return self._routeExtentionTypes(configEntry, r);
}, this._parseHtml(document))) :
因为开始值现在是CCD_ 4而不需要额外的变量,并且返回值成为下一次迭代的新输入值。
get: function (document, oData) {
var self = this;
return oData ?
this._convertBackToHtml(oData.reduce(function (r, configEntry) {
return self._routeExtentionTypes(configEntry, r);
}, this._parseHtml(document))) :
document;
}
相关文章:
- 缓存的最佳实践.避免冗余缓存
- UMD:正在分配给模块,导出冗余
- 如何更正阵列中的这种冗余
- Regex删除涉及零或一的冗余乘法/除法
- 删除方法中的冗余代码
- 多选择器冗余
- 简化冗余jquery's代码
- 排列具有相同数据的多个对象(减少冗余)
- Meteor模板-继承或外包事件以避免代码冗余
- HTML-减少HTML代码冗余
- 如果我两次使用相同的反应/冗余组件,它们会共享状态吗?
- ExtJS - 如何创建可重用的函数以避免代码冗余
- 避免模板代码冗余
- 如何重构用于初始化和更新的冗余代码
- highchart最大限度地减少代码冗余
- 如何在Javascript中重写函数时减少冗余代码
- Jquery内容滑块,如何复制无冗余代码
- 通过算法将冗余代码优化为循环
- 如何在使用服务器端和javascript代码时避免冗余的HTML代码
- 自定义冗余复选框输入Jquery代码