javascript - 如何将这三个功能重构为一个?

标签 javascript jquery refactoring

只有一行差异,我想知道这是否可能!

function sortHot() {
    var order = [];

    $("#container").children(".submission-preview").each(
        function() {
            var key = $(this).attr('id');

            var value = $("div#" + key.replace("sub", "votes")).html() * key.replace("sub", "");

            order.push([key, value]);
        }
    );

    return order;
}

function sortNew() {
    var order = [];

    $("#container").children(".submission-preview").each(
        function() {
            var key = $(this).attr('id');

            var value = key.replace("sub", "");

            order.push([key, value]);
        }
    );

    return order;
}

function sortTop() {
    var order = [];

    $("#container").children(".submission-preview").each(
        function() {
            var key = $(this).attr('id');

            var value = $("div#" + key.replace("sub", "votes")).html();

            order.push([key, value]);
        }
    );

    return order;
}

最佳答案

概括键到值转换的一种更“实用”的方法是包装一个通用排序函数,该函数接受回调参数以在键上应用该转换。例如:

function sortGeneric(callback) {
    var order = [];
    $("#container").children(".submission-preview").each(function() {
        var key = $(this).attr('id');
        var value = callback(key);
        order.push([key, value]);
    });
    return order;
}

function sortHot() {
    return sortGeneric(function (key) {
        return $("div#" + key.replace("sub", "votes")).html() * key.replace("sub", "");
    });
}

function sortNew() {
    return sortGeneric(function (key) {
        return key.replace("sub", "");
    });
}

function sortTop() {
    return sortGeneric(function (key) {
        return $("div#" + key.replace("sub", "votes")).html();
    });
}

关于javascript - 如何将这三个功能重构为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5201666/

相关文章:

javascript - 当我尝试提交搜索时输入清晰的文本

java - 是否可以重构这些方法以避免代码重复?

javascript - 使用 CSS3 Transform Scale 和 jQuery 制作动画脉冲效果

javascript - 具有单一数据的 Highcharts 面积图,不渲染

php - 如何在javascript或jquery中使用动态id?

jquery - 使用查询的 load() 和 span 更改多重选择 (HTML) 的内容

javascript - 从原型(prototype)类改进此代码片段

c# - 重构一些遗留代码时出现问题

javascript - Chrome 扩展程序 : reposition browser action popup. html 页面

javascript - 如何在 grunt 插件中运行 createReadStream(a stream)?