์๊ณ ๋ฆฌ์ฆ์ ํ๋ค๋ณด๋ฉด ์ด์ฐจ์ ๋ฐฐ์ด์ด๋ ํํ,๊ฐ์ฒด๋ฅผ ์ํ๋ ์กฐ๊ฑด๋๋ก ์ ๋ ฌํ๊ณ ์ถ์ ๋๊ฐ ์์ต๋๋ค.
๊ทธ๋ด ๋ ์ด๋ป๊ฒ ํด์ผํ๋์ง ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ์์ ์ผ๋ก ์กฐ๊ฑด๋ฌธ ์ด์ฉํด์ ์ ๋ ฌํ๋ ๊ฒ๊ณผ ๋ฐ์ ์ชฝ์์๋ ํํ์ ์ด์ฉํด์ ๊ฐ๋จํ๊ฒ ํ ์ค๋ก ์ ๋ ฌ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๊ฐ์ฒด ์ ๋ ฌ
struct Movie {
let title: String
let year: Int
let director: String
}
let movieList = [
Movie(title: "Star Wars", year: 1898, director: "Leorge Mucas"),
Movie(title: "A Star", year: 1922, director: "Michal Platpus"),
Movie(title: "Be yourself", year: 1700, director: "Coey Vamn"),
Movie(title: "The big bang", year: 2011, director: "Rom Natas"),
Movie(title: "The big bang", year: 1922, director: "Adra Kngr"),
Movie(title: "Finding Nemoy", year: 2022, director: "Raxip"),
Movie(title: "The big bang", year: 2011, director: "Jos Klimbr")
]
ํ ๊ฐ์ง ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ
์ ๋ชฉ ์ค๋ฆ์ฐจ ์ ํ ๋ค ์ ๋ชฉ์ด ๊ฐ์ผ๋ฉด ๋๋จธ์ง๋ ์ ๋ ฌ ์ ๋ฐฐ์ด ์์ ๊ธฐ์ค
let sortedMovieList = movieList.sorted { // Mark 1
$0.title < $1.title
}
for movie in sortedMovieList {
print(movie)
}
๋ ๊ฐ์ง ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ
์ ๋ชฉ ์ค๋ฆ์ฐจ์ → ์ ๋ชฉ์ด ๊ฐ์ผ๋ฉด ์ฐ๋ ์ค๋ฆ์ฐจ์ → ์ฐ๋๊ฐ ๊ฐ์ผ๋ฉด ์ ๋ ฌ ์ ๋ฐฐ์ด ์์ ๊ธฐ์ค
let sortedMovieList = movieList.sorted {
if $0.title == $1.title { // Mark 1
return $0.year < $1.year // Mark 2
}
return $0.title < $1.title // Mark 3
}
for movie in sortedMovieList {
print(movie)
}
์ธ๊ฐ์ง ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ธฐ
์ ๋ชฉ ์ค๋ฆ์ฐจ์ → ์ ๋ชฉ์ด ๊ฐ์ผ๋ฉด ์ฐ๋ ์ค๋ฆ์ฐจ์ → ์ฐ๋๊ฐ ๊ฐ์ผ๋ฉด ๊ฐ๋ ์ค๋ฆ์ฐจ์
let sortedMovieList = movieList.sorted {
if $0.title == $1.title {
if $0.year == $1.year {
return $0.director < $1.director
}
return $0.year < $1.year
}
return $0.title < $1.title
}
for movie in sortedMovieList {
print(movie)
}
์กฐ๊ฑด๋ฌธ์ด ์๋ ํํ ์ด์ฉํด์ ์ ๋ ฌํ๊ธฐ
ํํ๋ผ๋ฆฌ ๊ฐ์ ๋น๊ต๋ฅผ ํ ๋๋, ์ ์์๋ผ๋ฆฌ ๊ฐ๊ฐ ์์๋๋ก ํฌ๊ธฐ ๋น๊ต๋ฅผ ํ ์ ์๋ค.
let sortedMovieList = movieList.sorted {
($0.title, $0.year, $0.director) < ($1.title, $1.year, $1.director)
}
์ฐ์ ์์ ์์ ๋ฐ๊พธ๊ธฐ
let sortedMovieList = movieList.sorted {
($0.year, $0.title, $0.director) < ($1.year, $1.title, $1.director)
}
ํ๋๋ง ์ญ์
let sortedMovieList = movieList.sorted {
($0.title, $1.year, $0.director) < ($1.title, $0.year, $1.director)
}
for movie in sortedMovieList {
print(movie)
}
์ด์ฐจ์ ๋ฐฐ์ด ์ ๋ ฌ
let unsorted = [ [1,2] , [12,4] ,[12,1] ]
let sorted = unsorted.sorted {
($0[0] , $0[1] ) < ( $1[0] , $1[1] )
}
print( sorted) // output [[1, 2], [12, 1], [12, 4]]
let unsorted = [ [1,2] , [12,4] ,[12,1] ]
let sorted = unsorted.sorted {
($0[0] , $1[1] ) < ( $1[0] , $0[1] )
}
print(sorted) // [[1, 2], [12, 4], [12, 1]]
ํํ ๋ฐฐ์ด ์ ๋ ฌ
let unsorted = [ (1,2) , (12,4) ,(12,1) ]
let sorted = unsorted.sorted {
($0.0 , $0.1 ) < ( $1.0 , $1.1 )
}
print( sorted) // output [(1, 2), (12, 1), (12, 4)]
let unsorted = [ (1,2) , (12,4) ,(12,1) ]
let sorted = unsorted.sorted {
($0.0 , $1.1 ) < ( $1.0 , $0.1 )
}
print( sorted) // output [(1, 2), (12, 4), (12, 1)]
Reference
[Swift] Nested Array (2์ฐจ์ ๋ฐฐ์ด)์์ ํํ์ ์ด์ฉํด ๋ค์ค ์ ๋ ฌํ๋ ๋ฒ (sort, tuple, Closure)
์ค์ํํธ Array(๋ฐฐ์ด)์ ์์๊ฐ ์๋ Ordered Collection Type ์ด๋ค. Array๋ฅผ 2์ค์ผ๋ก ๋ง๋ค์ด์ ์ ๋ ฌ(sort)์ ๊ณต๋ถํด๋ณด์. ๋จผ์ , sort() ์ sorted() ์ ๋ ฌ ๋ฉ์๋์ ์ฐจ์ด๋ฅผ ์์์ผ ํ๋ค. sort ๋ ์๋ณธ๊ฐ์ ์ํฅ์ ์ฃผ
bicycleforthemind.tistory.com
Using Tuples to do Sorting Operations in Swift - Holy Swift
Using Tuples to do Sorting Operations in Swift - Holy Swift
This is a tutorial guide on how to use Tuples to do Sorting Operations in Swift. Learn how to use this data structure in your code.
holyswift.app
Sorting using tuples | Functional Swift
Sorting using tuples | Functional Swift
Sorting using tuples Say we have an array with unordered integers, for example [ 3, 99, 66, 1, 12, 100 , 3] and we need to order their elements. We know that we can use sort it easily with the function sort() var v = [ 3, 99, 66, 1, 12, 100 , 3] v.sort() p
www.instantmirage.com
'Swift' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ๋ฒ์์ฐ์ฐ์ ~= (0) | 2023.02.18 |
---|---|
[Swift] ์ค์ํํธ ์ง๋ฒ ๋ณํํ๊ธฐ (0) | 2023.01.25 |
[Swift] ํํ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด ์กฐ๊ฑด ๋ฃ์ด์ ์ ๋ ฌํ๊ธฐ (0) | 2023.01.24 |
[Swift] guard๋ฌธ ์์๋ณด๊ธฐ(guard let๊ณผ if let์ ์ฐจ์ด์ ๊น์ง) (0) | 2023.01.05 |