2017-02-26 1 views
0

나는 배열을루프 배열, 고유 값을 제거 떠나에만 중복

allIDs = ["1", "2", "2", "3", "4", "4"] 

을하고 난

sortedIDs = Array(Set(allIDs)) 

지금 내가있는 고유의 문자열을 제거 할 사용하여 독특한 내용을 만든 allIDs 배열 그래서 남아있는 모든 것이 중복됩니다.

for item in sortedIDs { 
while allIDs.contains(item) { 
    if let itemToRemoveIndex = allIDs.index(of: item) { 
     allIDs.remove(at: itemToRemoveIndex) 
     print(allIDs) 
    } 
} 

은}

이 나에게 비어있는 allIDs 배열을 제공합니다. 나는 4 번 반복해야하는 for 루프가 여섯 번 반복되고 모든 항목을 제거하는 방법을 잘 모른다. 감사합니다. .

+0

@dtd 중복되지 않습니다. OP는 이미 중복을 제거하는 방법을 알고 있습니다. 문제는 중복 만 포함하는 최종 배열을 만드는 것입니다. – rmaddy

+2

예상되는 결과는 무엇입니까? '[ "2", "4", "4"]'또는'[ "2", "4"]'? – Hamish

+0

제 잘못입니다. 내 의견을 삭제하겠습니다. 그러나 실제 질문을 반영하기 위해 질문 제목을 편집 할 것을 제안 할 수 있습니다. – dfd

답변

0

원하는 결과가 ["2", "4"]이라고 가정합니다. sortedIDs 배열을 얻기 위해 원래 배열에서 제거 된 중복 배열.

모든 복사본이 allIDs에서 제거 될 때까지 루프가 반복되는 while 루프입니다. sortedIDs에서 각 항목에 대해 1 번만 제거하면 원하는 결과를 얻을 수 있습니다.

for item in sortedIDs { 
    if let itemToRemoveIndex = allIDs.index(of: item) { 
     allIDs.remove(at: itemToRemoveIndex) 
     print(allIDs) 
    } 
}