我有一个填充了对象的数组。这些对象以两个值开头:sort1
和sort2
。
var arr_obj = [
{
sort1:'3000',
sort2:'200',
value:'Value1'
},
{
sort1:'4000',
sort2:'100',
value:'Value2'
},
{
sort1:'6000',
sort2:'200',
value:'Value3'
},
{
sort1:'6000',
sort2:'100',
value:'Value4'
},
{
sort1:'2000',
sort2:'500',
value:'Value5'
}
];
如何根据sort1
和sort2
的值对对象进行排序。 Sort1
占主导地位,如果两个值具有相同的sort1
值,则排序函数应查看sort2
以确定哪个值优先。
因此,对于我的示例数组,输出应该变为。
[
{
sort1:'2000',
sort2:'500',
value:'Value5'
},
{
sort1:'3000',
sort2:'200',
value:'Value1'
},
{
sort1:'4000',
sort2:'100',
value:'Value2'
},
{
sort1:'6000',
sort2:'100',
value:'Value4'
},
{
sort1:'6000',
sort2:'200',
value:'Value3'
}
];
我尝试在数组上使用简单的sort()
,但这可能会查看索引而不是第一个值。
有谁知道如何获得所要求的输出?
答案 0 :(得分:2)
您可以将比较功能设置为排序。
arr_obj.sort(function(a,b) {
if (a.sort1 === b.sort1) {
return a.sort2 - b.sort2;
}
return a.sort1 - b.sort1;
});
答案 1 :(得分:0)
试试这个: -
arr_obj.sort(function(prev,next){
if(prev.sort1 != next.sort1){
return prev.sort1 > next.sort1;
}else{
return prev.sort2 > next.sort2;
}
});