首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift 使用lexicographicallyprecedes 多个参数排序

Swift 使用lexicographicallyprecedes 多个参数排序

作者头像
星宇大前端
发布2019-04-18 16:28:09
1.1K0
发布2019-04-18 16:28:09
举报
文章被收录于专栏:大宇笔记大宇笔记

版权声明:转载请标明出处 https://blog.csdn.net/ZY_FlyWay/article/details/89184264

有时候我们需要用两个或者三个参数进行,排序比较。

lexicographicallyprecedes函数介绍


lexicographicallyprecedes可以看下苹果官方文档的介绍。

这里简单说一下:

func lexicographicallyPrecedes<OtherSequence>(_ other: OtherSequence) -> Bool where OtherSequence : Sequence, Self.Element == OtherSequence.Element

返回一个布尔值,该值使用小于操作符(<)比较元素,指示该序列是否在词典(字典)排序中的另一个序列之前。

我们看源码可以看出,这个函数的功能,是两个Sequence的比较。具体怎么比较实现方法,应该和我们手动写方法挨个比较一样。

多条件排序

然后我们就可以这样写多条件排序了,我们把多个属性做成序列对比即可。

先看下演示效果

在这里插入图片描述
在这里插入图片描述

Demo代码:

struct people{
    var lastName:String?
    var  fristName:String?
}

var persons = [people.init(lastName: "c", fristName: "120"),people.init(lastName: "a", fristName: "BBB"),people.init(lastName: "b", fristName: "110"),people.init(lastName: "a", fristName: "AAA")]

let new = persons.sorted { p0, p1 in
    
    let left = [p0.lastName,p0.fristName]
    let right =  [p1.lastName,p1.fristName]
    return left.lexicographicallyPrecedes(right){
        $0?.localizedCaseInsensitiveCompare($1!) == .orderedAscending
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • lexicographicallyprecedes函数介绍
    • 多条件排序
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档