循环筛选出数据所有类型并.sort()升序排序

循环取出类型:

 //返回类型
    public static get typeList() {
        //空数组用来存放类型
        let arr: any[] = [];
        //for循环先判断数组是否为空,如果是空的可以push进去一个类型
        for (let n: number = 0; n < this._guildAuctionList.length; n++) {
            if (arr.length > 0) {
                //类型是否一致
                let val: boolean = false;
                for (let m = 0; m < arr.length; m++) {
                    if (arr[m] == this._guildAuctionList[n].type) {
                        val = true
                    }
                }
                //不一致就push进去
                if (!val) {
                    arr.push(this._guildAuctionList[n].type);
                }
            } else {
                arr.push(this._guildAuctionList[n].type);
            }

        }
        //最后返回排序
        return arr.sort((a, b) => a - b)
    }

js 数组的排序

arr.sort([this.mailSortFun])

/**
     * 邮件排序
     * @param info0 
     * @param info1 
     */
    private mailSortFun(info0: any, info1: any) {
        if (info0.read && info1.read) {
            return info1.createTime - info0.createTime;
        }
        if (info0.read) {
            return 10000;
        }
        if (info1.read) {
            return -10000;
        }
        return info1.createTime - info0.createTime;
    }

如果传了 mailSortFun,那么数组会按照调用该函数的返回值排序。即 info0 和 info1 是两个将要被比较的元素:

如果 mailSortFun(info0, info1) return 的结果小于 0 ,那么 info0 会被排列到 info1 之前;

如果 mailSortFun(info0, info1) return 的结果等于 0 , info0 和 info1 的相对位置不变。

如果 mailSortFun(info0, info1) return 的结果大于 0 , info1 会被排列到 info0 之前。

var numbers = [4, 2, 5, 1, 3];
/*
	一开始 4-2 =2 return大于0的数  b(较小的数)会往前 a(较大的数)会往后,
	然后第二次 4 - 5 = -1 return小于0的数,则 a(较小的数)往前,b(教大的数)往后
	后面一次按此把小的数往前排最后完成升序排序
*/ 
numbers.sort((a, b) => a - b);
console.log(numbers);
// [1, 2, 3, 4, 5]

// 遇到小的数(b) 减去 大的数(a) 不会变位置 b-a 小于0 (a,b)位置不变
// 遇到大的数(b) 减去 小的数(a) b-a 大于0 ,(a,b) 大的往前放,小往后,最后成降序排序
numbers.sort((a, b) => b - a);
console.log(numbers);
// [5, 4, 3, 2, 1]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值