【问题标题】:Improvising Code Into A More DRY Approach?将代码即兴创作成更干燥的方法?
【发布时间】:2015-08-01 14:09:09
【问题描述】:

我正在格式化函数 inputCategories 中的数组,并且无法正确添加“类别”的第三个参数 - 迫使我多次复制该函数。

这是当前状态:

使用参数调用函数。

$scope.categories = inputCategories($scope.item.categories, $scope.settings.categories);

function inputCategories (input, settings) {
    var updatedSettings = [];
    angular.forEach(input, function(obj) {
        updatedSettings.push({"category": obj, "ticked": true});
    });
    var list = updatedSettings.concat(settings);
    list.sort(function(a, b) {
        return (a.category > b.category) - (a.category < b.category);
    });
    for ( var i = 1; i < list.length; i++ ){
        if(list[i-1].category == list[i].category) {
            list.splice(i,1);
        }
    }
    return list;
};

以下是需要第三个“类别”参数的地方。

function inputCategories (input, settings) {
    var updatedSettings = [];
    angular.forEach(input, function(obj) {
        updatedSettings.push({****"category"****: obj, "ticked": true});
    });
    var list = updatedSettings.concat(settings);
    list.sort(function(a, b) {
        return (a.****category**** > b.****category****) - (a.****category**** < b.****category****);
    });
    for ( var i = 1; i < list.length; i++ ){
        if(list[i-1].****category**** == list[i].****category****) {
            list.splice(i,1);
        }
    }
    return list;
};

我认为我遇到的问题是因为我在第四行的对象内部混合了字符串和一个字符串变量...?

【问题讨论】:

    标签: javascript arrays angularjs function sorting


    【解决方案1】:

    也许你可以这样做:

    function inputCategories (input, settings, category) {
        var updatedSettings = [];
        angular.forEach(input, function(obj) {
            var setting = { "ticked": true };
            setting[category] = obj;
            updatedSettings.push(setting);
        });
        var list = updatedSettings.concat(settings);
        list.sort(function(a, b) {
            return (a[category] > b[category]) - (a[category] < b[category]);
        });
        for ( var i = 1; i < list.length; i++ ){
            if(list[i-1][category] == list[i][category]) {
                list.splice(i,1);
            }
        }
        return list;
    };
    

    【讨论】:

    • 那是完美的。正式受过教育...谢谢@Exo
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    相关资源
    最近更新 更多