带有多表键的JavaScript Array.sort()
有人能帮我处理Array.sort()吗? 我可以对一个值进行排序(例如,带有多表键的JavaScript Array.sort(),javascript,arrays,sorting,Javascript,Arrays,Sorting,有人能帮我处理Array.sort()吗? 我可以对一个值进行排序(例如,返回a
返回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)+'');
您尝试过吗?它不起作用