当前位置: 首页 > 面试题库 >

Swift-使用多个条件对对象数组进行排序

程谦
2023-03-14
问题内容

我有一个Contact对象数组:

var contacts:[Contact] = [Contact]()

联系人类别:

Class Contact:NSOBject {
    var firstName:String!
    var lastName:String!
}

而且我想通过该数组进行排序lastName,然后firstName在某些情况下接触得到了相同的lastName

我可以按其中一个条件进行排序,但不能同时按两个条件进行排序。

contacts.sortInPlace({$0.lastName < $1.lastName})

我如何添加更多条件来对该数组进行排序?


问题答案:

想一想“按多个标准排序”是什么意思。这意味着首先通过一个条件比较两个对象。然后,如果这些条件相同,则领带将被下一个条件破坏,依此类推,直到获得所需的排序。

let sortedContacts = contacts.sort {
    if $0.lastName != $1.lastName { // first, compare by last names
        return $0.lastName < $1.lastName
    }
    /*  last names are the same, break ties by foo
    else if $0.foo != $1.foo {
        return $0.foo < $1.foo
    }
    ... repeat for all other fields in the sorting
    */
    else { // All other fields are tied, break ties by last name
        return $0.firstName < $1.firstName
    }
}

您在这里看到的是Sequence.sorted(by:)method,它参考提供的闭包来确定元素的比较方式。

如果您的排序将在许多地方使用,最好使您的类型符合Comparable
协议
。这样,您可以使用Sequence.sorted()method,该方法会咨询您的Comparable.<(_:_:)运算符实现,以确定元素之间的比较方式。这样,您可以对任何s进行排序SequenceContact而不必重复排序代码。



 类似资料:
  • 我的数组如下所示: 我想根据它们的第二个和第三个值按升序对这些数组进行排序,但第三个数值为负数的数组必须递减排序,并放在其他数组之后 结果应该是这样的: 怎么做才能尽可能的优化呢?

  • 问题内容: 在Swift 2.0中,您将如何按属性对自定义对象数组进行排序?我知道在Swift 1.2中,这是使用sorted()和sort()完成的。但是,这些方法在Xcode 7 beta 4中不再起作用。谢谢! 例如: 问题答案: 在Swift 2中: 您可以使用方法,使用来比较两个日期: 或者,如果您想对原始数组进行排序,则可以: 在Swift 3中 返回数组的排序形式,请使用,而不是 排

  • 问题内容: 我有一个包含Quote对象的数组列表。我希望能够按名称,更改和更改百分比的字母顺序进行排序。如何排序我的数组列表? 问题答案: 创建一个合适的对象,它将根据你所需的条件比较两个项目。然后在你的上使用 。 如果以后要按其他条件排序,请使用不同的再次调用。

  • 问题内容: 我有这个: 和[电影]数组。如何按名称的字母顺序对数组进行排序?我试过了: 和 但这不起作用,因为我没有访问电影的名称属性。 问题答案: 在传递给的闭包中,比较要排序的属性。像这样: 或以下要绕过案例的案例: 旁注: 通常,只有类型以大写字母开头;我建议使用and ,而不是and 。 例如,在操场上: 将按顺序 Swift5更新

  • 我在下面有下面的Java代码,我正在尝试将其转换为Swift。如果有人能在这个问题上帮助我,我将非常感激。 谢谢

  • 本文向大家介绍PHP使用array_multisort对多个数组或多维数组进行排序,包括了PHP使用array_multisort对多个数组或多维数组进行排序的使用技巧和注意事项,需要的朋友参考一下 PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序。 关联(string)键名保持不变,但数字键名会被重新索引。 输入数组被当成一个表的列并以