angular 对列表按某一字段进行排序,将多个数组合并成一个数组并按时间排序

方法一:使用管道对某一字段排序

新建管道

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]
        })
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值