带有多表键的JavaScript Array.sort()

带有多表键的JavaScript Array.sort(),javascript,arrays,sorting,Javascript,Arrays,Sorting,有人能帮我处理Array.sort()吗? 我可以对一个值进行排序(例如,返回a

有人能帮我处理Array.sort()吗? 我可以对一个值进行排序(例如,
返回a
),但不能对多个值进行排序。 我需要这种情况,当一些主要值有相同的结果

例如,阵列:

var data =    [
        {
            "name": "Paolos Pizza", 
            "rating_count": 20,
            "rating_value": 5,
            "price": 7
        },

        {
            "name": "Bella Italia", 
            "rating_count": 55,
            "rating_value": 3,
            "price": 7
        },

        {
            "name": "Mama Mia", 
            "rating_count": 2,
            "rating_value": 5,
            "price": 99
        },

        {
            "name": "Mario's" ,
            "rating_count": 23,
            "rating_value": 6,
            "price": 7
        },

        {
            "name": "Colazione e Roma" ,
            "rating_count": 52,
            "rating_value": 4,
            "price": 7
        }

    ];
首先,我想按键
price
对数组进行降序排序。如果某些条目具有相同的价格,则我希望根据
评级值对其进行升序排序。如果某些条目具有相同的
价格
和相同的
评级值
,则我希望按照
评级计数
进行升序排序

如何解决此问题?

这是您的解决方案:

arr.sort(function(a,b) {
    if(a.price != b.price) return a.price < b.price;
    if(a.rating_value != b.rating_value) return a.rating_value < b.rating_value;
    return a.rating_count < b.rating_count;
});
arr.sort(函数(a,b){
如果(a.price!=b.price)返回a.price

您可以相应地确定排序方向。

您可以使用
|
链接比较部分,并将差异作为订单回调的结果

var数组=[{“name”:“Paolos Pizza”,“rating_count”:20,“rating_value”:5,“price”:7},{“name”:“Bella Italia”,“rating_count”:55,“rating_value”:3,“price”:7},{“name”:“Mama Mia”,“rating_count”:2,“rating_value”:5,“price”:99},{“name”:“Mario's”,“rating_count”:23,“rating_value”:6,“price”:7},{“name”:“Colazione Roma”,“评级计数”:52,“评级价值”:4,“价格”:7}];
array.sort(函数(a,b){
返回b.价格-a.价格||
a、 额定值-b.额定值||
a、 评级计数-b.评级计数;
});

document.write(''+JSON.stringify(array,0,4)+'');
您尝试过吗?它不起作用