javascript-根据值对对象的javascript数组进行排序

javascript-根据值对对象的javascript数组进行排序,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个像这样的对象数组: {"aid":1,"id":51,"modifier":5}, {"aid":2,"id":51,"modifier":5}, {"aid":3,"id":51,"modifier":2}, {"aid":4,"id":51,"modifier":3}, {"aid":5,"id":51,"modifier":3} {"aid":1,"id":51,"modifier":5}, {"aid":2,"id":51,"modifier":5}, {"aid":3,"id

我有一个像这样的对象数组:

{"aid":1,"id":51,"modifier":5},
{"aid":2,"id":51,"modifier":5},
{"aid":3,"id":51,"modifier":2},
{"aid":4,"id":51,"modifier":3},
{"aid":5,"id":51,"modifier":3}
{"aid":1,"id":51,"modifier":5},
{"aid":2,"id":51,"modifier":5},
{"aid":3,"id":51,"modifier":2},
{"aid":4,"id":51,"modifier":3},
{"aid":5,"id":51,"modifier":3},
{"aid":6,"id":51,"modifier":5}
{"aid":1,"id":51,"modifier":5},
{"aid":2,"id":51,"modifier":5},
{"aid":6,"id":51,"modifier":5}
{"aid":3,"id":51,"modifier":2},
{"aid":4,"id":51,"modifier":3},
{"aid":5,"id":51,"modifier":3},
我将添加一个对象{aid:6,id:51,modifier:5},现在数组将如下所示:

{"aid":1,"id":51,"modifier":5},
{"aid":2,"id":51,"modifier":5},
{"aid":3,"id":51,"modifier":2},
{"aid":4,"id":51,"modifier":3},
{"aid":5,"id":51,"modifier":3}
{"aid":1,"id":51,"modifier":5},
{"aid":2,"id":51,"modifier":5},
{"aid":3,"id":51,"modifier":2},
{"aid":4,"id":51,"modifier":3},
{"aid":5,"id":51,"modifier":3},
{"aid":6,"id":51,"modifier":5}
{"aid":1,"id":51,"modifier":5},
{"aid":2,"id":51,"modifier":5},
{"aid":6,"id":51,"modifier":5}
{"aid":3,"id":51,"modifier":2},
{"aid":4,"id":51,"modifier":3},
{"aid":5,"id":51,"modifier":3},
但我想知道的是,我将如何将新对象{aid:6,id:51,modifier:5}推送到数组的最后一个索引中,而是基于修饰符,如下所示:

{"aid":1,"id":51,"modifier":5},
{"aid":2,"id":51,"modifier":5},
{"aid":3,"id":51,"modifier":2},
{"aid":4,"id":51,"modifier":3},
{"aid":5,"id":51,"modifier":3}
{"aid":1,"id":51,"modifier":5},
{"aid":2,"id":51,"modifier":5},
{"aid":3,"id":51,"modifier":2},
{"aid":4,"id":51,"modifier":3},
{"aid":5,"id":51,"modifier":3},
{"aid":6,"id":51,"modifier":5}
{"aid":1,"id":51,"modifier":5},
{"aid":2,"id":51,"modifier":5},
{"aid":6,"id":51,"modifier":5}
{"aid":3,"id":51,"modifier":2},
{"aid":4,"id":51,"modifier":3},
{"aid":5,"id":51,"modifier":3},

我不知道这是否可能,有什么办法可以解决这个问题。谢谢

您可以将自定义比较函数传递给Array.sort e、 g

我不确定你的搜索顺序背后的逻辑是什么,但是如果你能写一个比较函数,你可以按它排序

我注意到您的对象似乎是按修改器和辅助对象排序的。这意味着您要按多个属性排序。写一个这样的比较器

function comparator(keys, a, b) {
    var k, key, mod = [1, -1], order;
    for (k = 0; k < keys.length; ++k) {
        key = keys[k].key;
        order = !keys[k].descending;
        if (b[key] > a[key]) return order ? -1 : 1;
        else if (b[key] < a[key]) return  order ? 1 : -1;
    }
    return 0;
}

它是如何分类的?5 - 2 - 3? 那是什么样的分类方式?确切的逻辑是什么?你如何决定5在2之前,而不是在3之后?或者,您希望将同一个修饰符分组在一起,而没有特定的顺序?如果是这样的话,为什么排序会有问题呢?那么你想在最后一个项目之后插入一个具有类似修改器的新项目?这很好,但是下次会发生什么呢?添加aid:6后,重新加载数据,希望列表是什么样子?找到修改器的最后一个索引并拼接它?我想试试这个,但是a,b参数是什么?是,k是数组,b是值还是?@remolalata a和b是两个元素,用于排序,keys是您提供的对象数组,如所示示例: