考虑以下对象数组:
var arr = [
{ brand : 'BMW' , year : '2014' },
{ brand : 'Audi' , year : '2018' },
{ brand : 'Benz' , year : '2020' },
{ brand : 'BMW' , year : '2011' },
{ brand : 'Audi' , year : '2015' },
{ brand : 'BMW' , year : '2010' },
{ brand : 'BMW' , year : '2018' }
]
我试图按照品牌(不是按字母排序,而是按照特定权重...因此BMW拥有最高的权重=>奥迪=>奔驰)首先对这个数组进行排序,其次是按年份排序...所以我得到类似于这样的结果:
var arr = [
{ brand : 'BMW' , year : '2014' },
{ brand : 'BMW' , year : '2011' },
{ brand : 'BMW' , year : '2010' },
{ brand : 'Audi' , year : '2018' },
{ brand : 'Audi' , year : '2018' },
{ brand : 'Audi' , year : '2015' },
{ brand : 'Benz' , year : '2020' }
]
这是我迄今为止尝试过的,但似乎我并不真正理解 sort()
函数的用法:
function sortByBrand (a,b) {
if(a.brand == 'BMW' && b.brand !=='BMW') {
return 2
}else if (a.brand == 'Audi' && b.brand !=='Audi') {
return 1
} else if (a.brand == 'Benz' && b.brand !=='Benz') {
return 0
}
}
function sortByYear (a,b) {
return parseInt(b.year) - parseInt(a.year)
}
arr.sort(sortByBrand)
arr.sort(sortByYear)
我知道这会改变第一个排序,但我真的不知道如何将两个排序合并在一起。
{ brand : 'BMW' , year : '2018' }
对象被丢掉了,这是有意为之吗?还是应该在预期输出数组的顶部? - CertainPerformance