方法一:使用管道对某一字段排序
新建管道
ng g pipe pipes/orderby
orderby.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'orderby'
})
export class OrderbyPipe implements PipeTransform {
transform(array: Array<string>, args: string): Array<string> {
if(!array || array === undefined || array.length === 0) return null;
array.sort((a: any, b: any) => {
// 按降序排列
//pageViewCount是进行排序的字段名,在不同项目中需要修改
if (a.pageViewCount < b.pageViewCount) {
return 1;
} else if (a.pageViewCount > b.pageViewCount) {
return -1;
} else {
return 0;
}
});
return array;
}
}
在html中的应用
<!--orderby对应的是ts文件中的name-->
<li *ngFor="let item of contents | orderby; let i = index">
这里是内容
</li>
方法二:在ts文件中对数据进行排序
<ul class="list" *ngIf="anyList">
<li *ngFor="let list of anyList; let i = index">
<div>{{list.title}}</div>
<span class="date">{{list.creationtime | date:'yyyy-MM-dd':undefined:'en-US'}}</span>
</li>
</ul>
在首页父组件通过输入column的值,通过接口就可以获取对应column的数据
anyList = []
columns = []
//将多个数组合并成一个新数组
getNewList() {
//新建一个空数组存储for循环中的数据
let arr = []
for (let i = 0; i < this.columns.length; i++) {
arr = this.data[this.columns[i]].data
this.anyList = this.anyList.concat(arr)
}
//按时间排序
this.anyList.sort();
}
// 按时间排序,可以调换ab的位置实现升序和降序排列
// a.creationtime b.creationtime 是指按creationtime这个字段进行排序
sortId(b, a) {
return new Date(a.creationtime).valueOf() - new Date(b.creationtime).valueOf();
}
直接改变数据的排序:
data = data.sort(function (a, b) {
return a[valNameList[0].name] - b[valNameList[0].name]
})