0Pricing
Swift Academy · บทเรียน

filter และเพรดิเคต

เลือกสมาชิกที่ตรงตามเงื่อนไข

filter และเพรดิเคต เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

filter คืออะไร

filter จะเก็บไว้เฉพาะสมาชิกที่คลอเชอร์ (หรือเพรดิเคต) คืนค่าเป็น true

  • คลอเชอร์จะคืนค่าเป็น Bool
  • ชนิดของสมาชิกยังคงเดิม
  • ผลลัพธ์เป็นอาร์เรย์ใหม่ ซึ่งอาจมีขนาดเล็กลง

การใช้ filter อย่างง่าย

เก็บไว้เฉพาะตัวเลขคู่:

let numbers = [1, 2, 3, 4, 5, 6]
let evens = numbers.filter { $0 % 2 == 0 }
print(evens)  // [2, 4, 6]

การกรองสตริง

เก็บไว้เฉพาะคำที่ยาวเกินสามอักขระ:

let words = ["hi", "swift", "go", "filter"]
let long = words.filter { $0.count > 3 }
print(long)  // ["swift", "filter"]

เพรดิเคตคืออะไร

เพรดิเคต คือฟังก์ชันที่รับค่าและคืนค่าเป็น Bool อย่างง่าย ๆ filter จะเรียกใช้เพรดิเคตของคุณหนึ่งครั้งต่อสมาชิกแต่ละตัว และเก็บค่านั้นไว้เมื่อเพรดิเคตคืนค่าเป็น true

การตั้งชื่อเพรดิเคต

คุณสามารถจัดเก็บและนำเพรดิเคตกลับมาใช้ใหม่เพื่อให้อ่านโค้ดได้ง่ายขึ้น:

let isPositive: (Int) -> Bool = { $0 > 0 }
let data = [-2, 5, -1, 8]
print(data.filter(isPositive))  // [5, 8]

การรวมเงื่อนไข

ใช้ตัวดำเนินการบูลีนภายในเพรดิเคต:

let nums = [1, 2, 3, 4, 5, 6, 7, 8]
let picked = nums.filter { $0 % 2 == 0 && $0 > 4 }
print(picked)  // [6, 8]

การกรองโครงสร้างข้อมูล

กรองคอลเลกชันของออบเจ็กต์แบบจำลองตามคุณสมบัติ:

struct Product { let name: String; let price: Int }
let items = [Product(name: "Pen", price: 2), Product(name: "Bag", price: 40)]
let cheap = items.filter { $0.price < 10 }
print(cheap.map { $0.name })  // ["Pen"]

filter กับ map

ทั้งสองฟังก์ชันตอบคำถามคนละอย่าง: filter เลือกว่าสมาชิกใดจะคงอยู่ ส่วน map เปลี่ยนสมาชิกแต่ละตัว ชนิดของผลลัพธ์จึงแตกต่างกัน:

let n = [1, 2, 3, 4]
print(n.filter { $0 > 2 })  // [3, 4]  (subset, same type)
print(n.map { $0 > 2 })     // [false, false, true, true]

การต่อ filter และ map

กรองข้อมูลก่อนเพื่อลดปริมาณงาน แล้วจึงแปลงข้อมูล:

let nums = [1, 2, 3, 4, 5, 6]
let result = nums
    .filter { $0 % 2 == 0 }
    .map { $0 * $0 }
print(result)  // [4, 16, 36]

การนับโดยไม่เก็บผลลัพธ์

หากคุณต้องการเพียงจำนวน filter(...).count ก็ใช้งานได้ แต่ count(where:) จะหลีกเลี่ยงการสร้างอาร์เรย์:

let votes = [true, false, true, true]
let yes = votes.filter { $0 }.count
print(yes)  // 3

การกรองพจนานุกรม

การใช้ filter กับพจนานุกรมจะได้พจนานุกรมที่ประกอบด้วยคู่คีย์/ค่าที่ตรงเงื่อนไข:

let ages = ["Ann": 30, "Bo": 17, "Cy": 22]
let adults = ages.filter { $0.value >= 18 }
print(adults.keys.sorted())  // ["Ann", "Cy"]

ตรวจสอบความเข้าใจอย่างรวดเร็ว

เพรดิเคตของ filter ต้องคืนค่าเป็นอะไร

สรุป

คุณได้เรียนรู้การกรองแล้ว:

  • filter จะเก็บสมาชิกที่เพรดิเคตคืนค่าเป็น true
  • เพรดิเคต คือฟังก์ชันใด ๆ ที่แปลงค่าหนึ่งค่าเป็น Bool
  • ชนิดของสมาชิกยังคงเดิม แต่อาร์เรย์อาจมีขนาดเล็กลง
  • รวมเงื่อนไขด้วย && / || และต่อการทำงานกับ map ได้

ถัดไป: reduce

คำถามที่พบบ่อย

บทเรียน “filter และเพรดิเคต” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “filter และเพรดิเคต” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “filter และเพรดิเคต”

เลือกสมาชิกที่ตรงตามเงื่อนไข คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “filter และเพรดิเคต” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. map และ compactMap
  2. filter และเพรดิเคต
  3. reduce และ reduce(into:)
  4. flatMap และการเชื่อมต่อ
← กลับไปที่ Swift Academy