我正在创建一个新的数组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
}
发布于 2015-08-01 09:35:59
要想在快速1.0中直接回答您的问题,您可以进行压缩、排序和映射。
var alph_hostSongs: [String] = Array(Zip2(hostArtists, hostSongs)).sorted {
$0.0.localizedCaseInsensitiveCompare($1.0) == NSComparisonResult.OrderedAscending
}.map {
return $0.1
}
真正的答案是创造一个结构来容纳艺术家和歌曲。这样,它们总是相互联系在一起的。
发布于 2015-08-01 09:28:33
试试这个:
for newIndex in 0...alph_hostArtists - 1 {
for origIndex in 0...hostArtists - 1 {
if hostArtists[origIndex] == alph_hostArtists[newIndex] {
alph_hostSongs.append(hostSongs[origIndex])
}
}
}
它所做的是找到新数组的元素来自旧集合的索引,然后将其追加到新集合中。请注意,如果有来自同一艺术家的多首歌曲(将会有),这些歌曲将不会按照歌曲的字母顺序排列,而是按照它们输入的顺序排列。
https://stackoverflow.com/questions/31763977
复制