我有一个包含以下详细信息的列表,我希望按照评论数最多的那个排序,然后按字母顺序排序。
[
{
"reviews": 9,
"name": 'B'
}, {
"reviews": 9,
"name": 'A'
}, {
"reviews": 15,
"name": 'C'
}, {
"reviews": 9,
"name": 'D'
},..
]
我想要的排序顺序是:C A B D. 我有一个简单的排序管道,可以通过评论对其进行排序,但我希望它之后按名称排序。
items.sort(function(a, b) {
return a['reviews'] - b['reviews'];
}
感谢。
答案 0 :(得分:0)
@Pipe({
name: 'filter'
})
export class FilterPipe implements PipeTransform {
transform(items: Array<any>, filter: {[key: string]: any }): Array<any> {
return items.filter(item => {
let notMatchingField = Object.keys(filter)
.find(key => item[key] !== filter[key]);
return !notMatchingField; // true if matches all fields
});
}
}
答案 1 :(得分:0)
items
.sort(function(a, b) {
return a['reviews'] - b['reviews'];
}
.sort(function(a, b) {
let a = a['name'].toUpperCase();
let b = b['name'].toUpperCase();
return (a < b) ? -1 : (a > b) ? 1 : 0;
});
或者您可以使用toLocalCompare
items
.sort(function(a, b) {
return a['reviews'] - b['reviews'];
}
.sort(function(a, b) {
return a['name'].localeCompare(b['name']);
});