Sorting 基于其他已排序数组的排序数组
我有两个大小相同的数组,我对第二个数组进行排序。如何排列第一个要匹配的数组 基本示例(假设将Sorting 基于其他已排序数组的排序数组,sorting,swift,Sorting,Swift,我有两个大小相同的数组,我对第二个数组进行排序。如何排列第一个要匹配的数组 基本示例(假设将int替换为Strings): 结果: array2 is now [8, 6, 5, 5, 5, 5, 4, 4, 3, 2, 1] 如何对array1的索引值进行排序以匹配array2 array1 should now be [6, 5, 0, 4, 7, 9, 3, 8, 2, 1, 0] Zip2,排序和映射 array1 = map(sorted(Zip2(array1, array2),
int
替换为Strings
):
结果:
array2 is now [8, 6, 5, 5, 5, 5, 4, 4, 3, 2, 1]
如何对array1的索引值进行排序以匹配array2
array1 should now be [6, 5, 0, 4, 7, 9, 3, 8, 2, 1, 0]
Zip2
,排序
和映射
array1 = map(sorted(Zip2(array1, array2), {$0.1 > $1.1}), { $0.0 })
组合
过滤器
var array1 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
var array2 = [5, 2, 3, 4, 5, 6, 8, 5, 4, 5, 1]
func isEven(x:Int) -> Bool {
return x % 2 == 0
}
let result = map(sorted(filter(Zip2(array1, array2), { isEven($0.1) }), {$0.1 > $1.1}), { $0.0 })
// -> ["6", "5", "3", "8", "1"]
如您所见,行太复杂,您可能需要Array
方法链语法:
let result2 = Array(Zip2(array1, array2))
.filter({ isEven($0.1) })
.sorted({ $0.1 > $1.1 })
.map({ $0.0 })
无论如何,如果您的array2
是[PFObject]
,则可以实现如下功能:
func isOpen(restaurant: PFObject, forTime time: String, onDay day: Int) -> Bool {
// return `true` if the restaurant is open, `false` otherwise
}
Zip2
,排序
和映射
array1 = map(sorted(Zip2(array1, array2), {$0.1 > $1.1}), { $0.0 })
组合
过滤器
var array1 = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0"]
var array2 = [5, 2, 3, 4, 5, 6, 8, 5, 4, 5, 1]
func isEven(x:Int) -> Bool {
return x % 2 == 0
}
let result = map(sorted(filter(Zip2(array1, array2), { isEven($0.1) }), {$0.1 > $1.1}), { $0.0 })
// -> ["6", "5", "3", "8", "1"]
如您所见,行太复杂,您可能需要Array
方法链语法:
let result2 = Array(Zip2(array1, array2))
.filter({ isEven($0.1) })
.sorted({ $0.1 > $1.1 })
.map({ $0.0 })
无论如何,如果您的array2
是[PFObject]
,则可以实现如下功能:
func isOpen(restaurant: PFObject, forTime time: String, onDay day: Int) -> Bool {
// return `true` if the restaurant is open, `false` otherwise
}
我会说做一个数组的对象和排序对象…我会说做一个数组的对象和排序对象…这对函数也有用吗?如果我调用array2
FilterReopon(detailsfoodphotos,forTime:time.time,onDay:time.dayOfWeek)的函数
并以相同的方式映射array1?它会像这样:map(filterReopon(detailsfoodphotos,forTime:time.time,onDay:time.dayOfWeek),{$0.0}
什么是FilterReopon
?如果是这样的话,我认为这是行不通的。我将添加基本的示例组合过滤器
。非常感谢。但是,如果myFilterReopen
函数返回一个数组,那么过滤器会工作吗?或者我需要创建一个可以过滤单个数据的新函数吗?(请参见编辑后的问题)后者:您需要创建一个新函数。这并不难,你的过滤器重新打开
已经有了过滤器
逻辑。你可以把它提取出来。这对函数也有用吗?如果我调用array2FilterReopon(detailsfoodphotos,forTime:time.time,onDay:time.dayOfWeek)的函数
并以相同的方式映射array1?它会像这样:map(filterReopon(detailsfoodphotos,forTime:time.time,onDay:time.dayOfWeek),{$0.0}
什么是FilterReopon
?如果是这样的话,我认为这是行不通的。我将添加基本的示例组合过滤器
。非常感谢。但是,如果myFilterReopen
函数返回一个数组,那么过滤器会工作吗?或者我需要创建一个可以过滤单个数据的新函数吗?(请参见编辑后的问题)后者:您需要创建一个新函数。这并不难,你的过滤器重新打开
已经有了过滤器
逻辑。你可以提取出来。