Skip to content

Instantly share code, notes, and snippets.

View satan87's full-sized avatar
🏠
Working from home

nicolas satan87

🏠
Working from home
View GitHub Profile
// MARK: IF FILTER
var bookBefore2000 = [Book]()
for book in books {
if book.year < 2000 {
bookBefore2000.append(book)
}
}
// MARK: HIGHER ORDER FUNCTION
let bookBefore2020HOF = books.filter({$0.year < 2000})
struct SearchingBook {
var byBeforeYear = 0 //0 meaning do not filter on this
var byFavorite = FavoriteSearch.all
var byAuthorFirstName = ""
}
enum FavoriteSearch {
case all
case favorite
case notFavorite
}
func filterBooks(books: [Book], by filters: SearchingBook) -> [Book]
// MARK: FILTER FUNCTION
func filterBooks(books: [Book], by filters: SearchingBook) -> [Book]{
var bookFiltered = books.filter({ filters.byBeforeYear == 0 || $0.year < filters.byBeforeYear})
//Search by favorite
switch filters.byFavorite {
case .favorite:
bookFiltered.removeAll(where: {!$0.favorite})
case .notFavorite:
var bookFiltered = books.filter({ filters.byBeforeYear == 0 || $0.year < filters.byBeforeYear})
switch filters.byFavorite {
case .favorite:
bookFiltered.removeAll(where: {!$0.favorite})
case .notFavorite:
bookFiltered.removeAll(where: {$0.favorite})
default:
break
}
if !filters.byAuthorFirstName.isEmpty {
bookFiltered.removeAll(
where: {$0.author.firstName.range(of: filters.byAuthorFirstName, options: .caseInsensitive) == nil})
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.