Arrays 根据其中一个数组的字母顺序在Swift中对2个数组进行排序

Arrays 根据其中一个数组的字母顺序在Swift中对2个数组进行排序,arrays,swift,sorting,Arrays,Swift,Sorting,我正在创建一个新数组,alph\u hostArtists:[String],它按字母顺序对hostArtists进行排序。然后,我需要安排一个新数组alph_hostSongs,以便每个“歌曲”的索引与hostArtists和hostSongs中定义的每个“艺术家”匹配。我会使用字典,但问题是每个数组中可能存在重复的歌曲和艺术家,它们不共享相同的艺术家/歌曲 var hostArtists: [String] = ["z", "a", "d", "d", "1"] var hostSongs:

我正在创建一个新数组,
alph\u 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
}
试试这个:

for newIndex in 0...alph_hostArtists - 1 {
    for origIndex in 0...hostArtists - 1 {
        if hostArtists[origIndex] == alph_hostArtists[newIndex] {
            alph_hostSongs.append(hostSongs[origIndex])
        }
    }
}
它所做的是查找新数组的元素来自旧集合的索引,然后将其追加到新集合。请注意,如果有来自同一艺术家的多首歌曲(将会有),这些歌曲将不会按歌曲的字母顺序排列,而是按输入的顺序排列。请尝试以下操作:

for newIndex in 0...alph_hostArtists - 1 {
    for origIndex in 0...hostArtists - 1 {
        if hostArtists[origIndex] == alph_hostArtists[newIndex] {
            alph_hostSongs.append(hostSongs[origIndex])
        }
    }
}
它所做的是查找新数组的元素来自旧集合的索引,然后将其追加到新集合。请注意,如果有来自同一艺术家的多首歌曲(将会有),这些歌曲将不会按歌曲的字母顺序排列,而是按输入的顺序排列。请尝试以下操作:

for newIndex in 0...alph_hostArtists - 1 {
    for origIndex in 0...hostArtists - 1 {
        if hostArtists[origIndex] == alph_hostArtists[newIndex] {
            alph_hostSongs.append(hostSongs[origIndex])
        }
    }
}
它所做的是查找新数组的元素来自旧集合的索引,然后将其追加到新集合。请注意,如果有来自同一艺术家的多首歌曲(将会有),这些歌曲将不会按歌曲的字母顺序排列,而是按输入的顺序排列。请尝试以下操作:

for newIndex in 0...alph_hostArtists - 1 {
    for origIndex in 0...hostArtists - 1 {
        if hostArtists[origIndex] == alph_hostArtists[newIndex] {
            alph_hostSongs.append(hostSongs[origIndex])
        }
    }
}

它所做的是查找新数组的元素来自旧集合的索引,然后将其追加到新集合。请注意,如果有来自同一艺术家的多首歌曲(将会有),歌曲将不会按歌曲的字母顺序排列,而是按输入的顺序排列。要在swift 1.0中直接回答您的问题,您可以进行压缩、排序和映射

var alph_hostSongs: [String] = Array(Zip2(hostArtists, hostSongs)).sorted {
    $0.0.localizedCaseInsensitiveCompare($1.0) == NSComparisonResult.OrderedAscending
}.map {
    return $0.1
}


真正的答案是创建一个结构来容纳艺术家和歌曲。这样,它们总是链接在一起。

要在swift 1.0中直接回答您的问题,您可以进行压缩、排序和映射

var alph_hostSongs: [String] = Array(Zip2(hostArtists, hostSongs)).sorted {
    $0.0.localizedCaseInsensitiveCompare($1.0) == NSComparisonResult.OrderedAscending
}.map {
    return $0.1
}


真正的答案是创建一个结构来容纳艺术家和歌曲。这样,它们总是链接在一起。

要在swift 1.0中直接回答您的问题,您可以进行压缩、排序和映射

var alph_hostSongs: [String] = Array(Zip2(hostArtists, hostSongs)).sorted {
    $0.0.localizedCaseInsensitiveCompare($1.0) == NSComparisonResult.OrderedAscending
}.map {
    return $0.1
}


真正的答案是创建一个结构来容纳艺术家和歌曲。这样,它们总是链接在一起。

要在swift 1.0中直接回答您的问题,您可以进行压缩、排序和映射

var alph_hostSongs: [String] = Array(Zip2(hostArtists, hostSongs)).sorted {
    $0.0.localizedCaseInsensitiveCompare($1.0) == NSComparisonResult.OrderedAscending
}.map {
    return $0.1
}


真正的答案是创建一个结构来容纳艺术家和歌曲。第三行:
var alph_hostSongs:[String]=hostSongs.sorted
,是否应该是
var alph_hostArtists:[String]=hostArtists.sorted
?是的。我不小心交换了它们。第三行:
var alph_hostSongs:[String]=hostSongs.sorted
,它应该是
var alph_hostArtists:[String]=hostArtists.sorted
?是的。我不小心交换了它们。第三行:
var alph_hostSongs:[String]=hostSongs.sorted
,它应该是
var alph_hostArtists:[String]=hostArtists.sorted
?是的。我不小心交换了它们。第三行:
var alph_hostSongs:[String]=hostSongs.sorted
,它应该是
var alph_hostArtists:[String]=hostArtists.sorted
?是的。我不小心把它们换了。