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
?如果是这样的话,我认为这是行不通的。我将添加基本的示例组合
过滤器
。非常感谢。但是,如果my
FilterReopen
函数返回一个数组,那么过滤器会工作吗?或者我需要创建一个可以过滤单个数据的新函数吗?(请参见编辑后的问题)后者:您需要创建一个新函数。这并不难,你的
过滤器重新打开
已经有了
过滤器
逻辑。你可以把它提取出来。这对函数也有用吗?如果我调用array2
FilterReopon(detailsfoodphotos,forTime:time.time,onDay:time.dayOfWeek)的函数
并以相同的方式映射array1?它会像这样:
map(filterReopon(detailsfoodphotos,forTime:time.time,onDay:time.dayOfWeek),{$0.0}
什么是
FilterReopon
?如果是这样的话,我认为这是行不通的。我将添加基本的示例组合
过滤器
。非常感谢。但是,如果my
FilterReopen
函数返回一个数组,那么过滤器会工作吗?或者我需要创建一个可以过滤单个数据的新函数吗?(请参见编辑后的问题)后者:您需要创建一个新函数。这并不难,你的
过滤器重新打开
已经有了
过滤器
逻辑。你可以提取出来。