Javascript 即兴编写代码到一个更枯燥的方法中?

Javascript 即兴编写代码到一个更枯燥的方法中?,javascript,arrays,angularjs,function,sorting,Javascript,Arrays,Angularjs,Function,Sorting,我正在格式化函数inputCategories中的数组,无法正确添加第三个参数“category”-迫使我多次复制该函数 以下是当前状态: 使用参数调用函数 $scope.categories = inputCategories($scope.item.categories, $scope.settings.categories); function inputCategories (input, settings) { var updatedSettings = []; an

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

以下是当前状态:

使用参数调用函数

$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;
};
$scope.categories=inputCategories($scope.item.categories,$scope.settings.categories);
功能输入类别(输入、设置){
var updatedSettings=[];
角度forEach(输入、功能(obj){
push({“category”:obj,“ticked”:true});
});
var list=updatedSettings.concat(设置);
列表.排序(函数(a,b){
返回(a类>b类)-(a类
以下是需要第三个参数“category”的地方。

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;
};
功能输入类别(输入、设置){
var updatedSettings=[];
角度forEach(输入、功能(obj){
updatedSettings.push({****“category”****:obj,“ticked”:true});
});
var list=updatedSettings.concat(设置);
列表.排序(函数(a,b){
返回(a.***类****>b.***类****)-(a.***类****

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

也许你可以这样做:

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;
};
功能输入类别(输入、设置、类别){
var updatedSettings=[];
角度forEach(输入、功能(obj){
var设置={“勾选”:true};
设置[类别]=obj;
更新设置。推送(设置);
});
var list=updatedSettings.concat(设置);
列表.排序(函数(a,b){
返回(a[类别]>b[类别])-(a[类别]
这太完美了。正式接受教育的。。。谢谢@Exo