我需要根据每个元素的值和索引对数组进行排序,所以我想做这样的事情:
let a = [4,9,5,7].enumerate()
let b = a.sort { ... }
但是我需要将b转换回没有索引的数组。我目前的解决方案是
let c = b.map { $0.1 }
但是我想知道,如果有更简单的方法,因为b属于EnumerateSequence<Array<Int>>
类型并且具有保存我想要的数组的属性base
。不幸的是base
是internal
而且我不知道是否有任何方法可以返回我想要的内容。
注意:您可能已经注意到这是Swift 2.虽然我需要Swift 2中的解决方案(如果有的话),但我当然感兴趣的是它们之间的区别是什么? Swift 2和Swift 3。
答案 0 :(得分:0)
但我想知道,如果有更简单的方法
没有。 array_keys()
简单。
答案 1 :(得分:0)
这稍微( 2个字符)更简单:
let c = b.map { $1 }
map
会收到两个值的元组,因此您可以将这两个值称为$0.0
和$0.1
,或$0
和{{1} }。当您的闭包只使用$1
时,$0
就是整个元组,因此$0
和.0
指的是各个项目。当你的闭包提到.1
时,$1
是元组的第一项,$0
是元组的第二项。