我正在创建一个新数组alph_hostArtists: [String]
,它按字母顺序对hostArtists
进行排序。然后,我需要安排一个新数组alph_hostSongs
,使每个“歌曲”的索引与hostArtists
和hostSongs
中定义的每个“艺术家”匹配。我会使用字典,但问题是每个阵列中可能存在重复的歌曲和艺术家,它们不共享相同的艺术家/歌曲。
var hostArtists: [String] = ["z", "a", "d", "d", "1"]
var hostSongs: [String] = ["bb", "yy", "cc", "56", "bb"]
var alph_hostSongs: [String] = hostSongs.sorted
{
$0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending
}
答案 0 :(得分:3)
要直接在swift 1.0中回答您的问题,您可以进行压缩,排序和映射。
var alph_hostSongs: [String] = Array(Zip2(hostArtists, hostSongs)).sorted {
$0.0.localizedCaseInsensitiveCompare($1.0) == NSComparisonResult.OrderedAscending
}.map {
return $0.1
}
真正的答案是创建一个结构来保存艺术家和歌曲。这样他们总是联系在一起。
答案 1 :(得分:0)
试试这个:
for newIndex in 0...alph_hostArtists - 1 {
for origIndex in 0...hostArtists - 1 {
if hostArtists[origIndex] == alph_hostArtists[newIndex] {
alph_hostSongs.append(hostSongs[origIndex])
}
}
}
它的作用是找到新数组的元素来自旧集合的索引,然后将其附加到新集合。请注意,如果同一位艺术家有多首歌曲(将会有),歌曲将按照字母顺序排列,但按照输入的顺序排列