2015-08-01 3 views
0

Я создаю новый массив, alph_hostArtists: [String], который сортирует hostArtists в алфавитном порядке. Затем мне нужно упорядочить новый массив alph_hostSongs таким образом, чтобы индекс каждой «песни» соответствовал каждому «художнику», как определено в hostArtists и hostSongs. Я бы использовал словарь, но проблема в том, что в каждом массиве могут быть дубликаты песен и исполнителей, которые не имеют одного и того же исполнителя/песни.Сортировка 2 массивов в Swift на основе алфавитного порядка одного из массивов

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-я строка: 'var alph_hostSongs: [String] = hostSongs.sorted', предполагается, что это' var alph_hostArtists: [String] = hostArtists.sorted'? – BobRon

+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 
} 

Реальные ответы, чтобы создать на структуру для хранения как исполнителя и песню. Таким образом, они всегда связаны друг с другом.

+0

_real answer_ - правильный подход. – Abizern

+0

Спасибо! Это прекрасно работает. –

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]) 
     } 
    } 
} 

Что он делает это находит, при котором индекс элемента нового массива происходит от старого набора, а затем добавляет, что к новому набору. Будьте предупреждены, что если есть несколько песен от того же исполнителя (что будет), песни будут упорядочены не по алфавиту по алфавиту, а по порядку они будут введены в

Смежные вопросы