javascript - 删除方法中的冗余代码

标签 javascript jquery mapreduce ternary-operator

我使用了以下有效的代码,但在阅读了有关 JS 的内容后(我还很新),我注意到了 3 件事。

  1. 在方法的开头使用return

  2. 使用三元条件(不确定在这种情况下如何使用它)

  3. 使用 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
    }

这段代码是做什么的

  1. getting HtmlString and parse it
  2. extend it according to the cofigEntry and the original HTML
  3. when the config entry was done it convert back to HTML

最佳答案

在方法的开头使用return

当您的对象准备好具有所需值时使用返回。尽早返回是一种很好的做法。这样可以执行和评估最少量的代码。

在上面的示例中,“oInnerHTML”变量根据满足特定条件的值准备就绪,因此在这种情况下,您可以在对象/变量准备好值后立即返回它。

使用三元条件

当您根据简单条件为变量赋值或者您正在做出多个结果非常短暂的决策时,三元运算符很常见。例如

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() 方法对累加器和数组的每个值(从左到右)应用一个函数,以将其缩减为单个值。

[0, 1, 2, 3, 4].reduce(function(previousValue, currentValue, currentIndex, array) { return previousValue + currentValue; });

关于javascript - 删除方法中的冗余代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36565172/

相关文章:

javascript - 在按钮单击事件上关闭模式对话框

javascript - 如果另一个 li 具有特定类,Jquery 在单击 li 类时隐藏父 div

javascript - 将元素从一个监听器传递到嵌套监听器

scala - 在 Spark 数据集中滚动你自己的 reduceByKey

sorting - MapReduce 排序迭代器

javascript - 退出后如何重新启动代码?

javascript - app.set ('port',端口) 'TypeError: undefined is not a function'。初学者,需要思路

javascript - 重定向到父窗口

jQuery - 获取链接,应用于其他元素并隐藏原始元素

hadoop - 分布式缓存/文件和单节点Hadoop