Filter, sort in action
Contents
Back to basic
Hồi học phổ thông, tôi rất ấn tượng với một thằng giải toán bằng định nghĩa. Hắn học chuyên toán tự nhiên, ngồi trên tôi một bàn, quả thực không khó để tôi liếc được bài :D. Một cách giải thật đặc biệt, xuất phát từ định nghĩa cơ bản, trong khi cách giải thông thường là dùng công thức. Về sau, khi làm lập trình, tôi càng thấm thía hơn những cách làm đơn giản kiểu như vậy.
Có thể nói, những kĩ thuật đơn giản, chúng ta hay bỏ quên, đôi khi lại đưa ra một cách giải hay, độc đáo. Hôm nay, tôi sẽ “back to basic” để xem lại các hướng giải quyết việc filter và sort trong Array.
Filter
Giả sử ta có một mảng
|
|
Ta cần lọc ra những phần tử có chứa từ “hoang”. Ta có thể sử dụng những cách sau.
- Sử dụng NSPredicate
Trường hợp ta không phân biệt chữ hoa chữ thường ta có thể làm như sau
|
|
Trường hợp ta không phân biệt dấu
|
|
Nếu không cần phân biệt cả viết hoa, thường, cả dấu, ta có thể kết hợp điều kiện
|
|
Về query format của NSPredicate, mọi người tham khảo thêm tại đây.
- Sử dụng hàm filter của swift
Cách trên là kế thừa di sản từ ObjC, bây giờ chúng ta sử dụng cách khác, gọn hơn và clear hơn.
Không phân biệt chữ hoa, chữ thường
|
|
Ngắn hơn có thể dùng cách sau
|
|
Không phân biệt dấu
|
|
Sort (theo Alphabet)
- Sử dụng ComparisonResult
Trường hợp không phân biệt chữ hoa, chữ thường (Theo mã ascii)
|
|
Kết quả nhận được như sau
[“quoc nguyen”, “quoc anh”, “Hoang hai”, “hoàng giang”, “anh ngoc”]
- Sử dụng NSSortDescriptor
|
|
Kết quả cũng ra tương tự như trên
- Sử dụng hàm sorted của swift
|
|
Kết
Tóm lại bằng một câu mà ai cũng biết :D
Keep it simple
Author VietHQ
LastMod 2017-07-03