繁体   English   中英

如何按布尔值快速排序数组?

[英]How to sort an array by boolean filed in swift?

我有一个这样定义的类:

class someClass {
   var isCompleted = false
}

如何排序someClass的列表? 如果要将已完成的项目移到列表顶部。

您可以通过将布尔值转换为Int来根据布尔属性进行排序:

let arrayOfClasses =  ... // array of classes

let sortedArrayOfClasses = sorted(arrayOfClasses) {
    Int($0.isCompleted) > Int($1.isCompleted)
}

或采用“原位”排序:

var arrayOfClasses =  ... // array of classes

sort(&arrayOfClasses) {
    Int($0.isCompleted) > Int($1.isCompleted)
}

如果第一个参数必须在第二个参数之前sorted用于sortsorted参数闭包将返回true ,否则返回false

所以你可以:

let array = [ ... ]

let sortedArray = array.sorted { a, b in
    a.isCompleted && !b.isCompleted
}
var yourArrayOfBooleans:[SomeClass] = ...

var sortedArrayOfBooleans:[SomeClass] = []
var tmpArray:[SomeClass] = []

for ar in yourArrayOfBooleans
{
     if ar.isCompleted
     {
          sortedArrayOfBooleans.append(ar)
     }
     else
     {
         tmpArray.append(ar)
     }
}
sortedArrayOfBooleans += tmpArray

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM