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

Map, Filter และ Reduce บนอาร์เรย์

แปลงอาร์เรย์ด้วยฟังก์ชันระดับสูงเชิงฟังก์ชัน

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

ยินดีต้อนรับ

ฟังก์ชันระดับสูงของ Swift — `map`, `filter` และ `reduce` — ใช้แปลงคอลเลกชันโดยไม่เปลี่ยนแปลงข้อมูล ฟังก์ชันเหล่านี้ทำให้เจตนาของโค้ดชัดเจนและช่วยกำจัดลูปที่มีโอกาสเกิดข้อผิดพลาด

map — แปลงสมาชิกทุกตัว

```swift let nums = [1, 2, 3, 4] let doubled = nums.map { $0 * 2 } // [2,4,6,8] let strings = nums.map { "Item \($0)" } // ["Item 1","Item 2",...] ``` `map` ใช้โคลเชอร์กับสมาชิกแต่ละตัว แล้วคืนอาร์เรย์ใหม่ที่ประกอบด้วยผลลัพธ์

filter — เก็บสมาชิกที่ตรงเงื่อนไข

```swift let scores = [45, 80, 92, 37, 68] let passing = scores.filter { $0 >= 60 } // [80,92,68] let even = (1...10).filter { $0 % 2 == 0 } // [2,4,6,8,10] ``` `filter` คืนอาร์เรย์ใหม่ที่มีเฉพาะสมาชิกซึ่งโคลเชอร์คืนค่าเป็น `true`

reduce — รวมเป็นค่าเดียว

```swift let nums = [1, 2, 3, 4, 5] let sum = nums.reduce(0) { $0 + $1 } // 15 let product = nums.reduce(1, *) // 120 let joined = ["a","b","c"].reduce("") { $0 + $1 } // "abc" ```

การเชื่อม map, filter และ reduce

```swift let result = (1...10) .filter { $0 % 2 == 0 } // [2,4,6,8,10] .map { $0 * $0 } // [4,16,36,64,100] .reduce(0, +) // 220 ``` การเชื่อมต่ออ่านจากซ้ายไปขวา ทำให้กระบวนการข้อมูลชัดเจน

compactMap — แปลงและแกะค่า

```swift let strings = ["1","two","3","four","5"] let nums = strings.compactMap { Int($0) } // [1,3,5] ``` `compactMap` จะแปลงค่าและนำผลลัพธ์ที่เป็น nil ออก เหมาะอย่างยิ่งสำหรับการแปลงค่าที่อาจล้มเหลว

flatMap — คลี่อาร์เรย์ซ้อนกัน

```swift let nested = [[1,2,3],[4,5],[6]] let flat = nested.flatMap { $0 } // [1,2,3,4,5,6] let words = ["hello world","foo bar"] let all = words.flatMap { $0.split(separator: " ") } // ["hello","world","foo","bar"] ```

forEach — ใช้เฉพาะผลข้างเคียง

```swift [1, 2, 3].forEach { print($0) } ``` `forEach` คล้ายลูป `for-in` แต่ไม่สามารถใช้ `break` หรือ `continue` ได้ ใช้เมื่อคุณต้องการเพียงผลข้างเคียงและไม่จำเป็นต้องออกจากลูปก่อนกำหนด

reduce(into:) สำหรับพจนานุกรม

```swift let words = ["apple","banana","apricot","blueberry"] let grouped = words.reduce(into: [Character:[String]]()) { dict, word in let key = word.first! dict[key, default: []].append(word) } // ["a":["apple","apricot"],"b":["banana","blueberry"]] ```

การเชื่อมโยงแบบประเมินเมื่อเรียกใช้เพื่อประสิทธิภาพ

```swift let lazyResult = (1...1_000_000) .lazy .filter { $0 % 7 == 0 } .map { $0 * 2 } .prefix(5) // No intermediate arrays created! ``` เพิ่ม `.lazy` ไว้ที่จุดเริ่มต้นของการเชื่อมโยง เพื่อให้ประเมินค่าเมื่อจำเป็น

ตรวจสอบอย่างรวดเร็ว

ฟังก์ชันใดใช้แปลงสมาชิกแต่ละตัวและนำผลลัพธ์ที่เป็น nil ออก

สรุป

ประเด็นสำคัญ: • `map` — แปลงสมาชิกทุกตัวเป็นอาร์เรย์ใหม่ • `filter` — เก็บสมาชิกที่ตรงกับ predicate • `reduce` — รวมค่าเป็นค่าที่สะสมเพียงค่าเดียว • `compactMap` — แปลงค่าและทิ้งค่าที่เป็น nil • `flatMap` — แปลงค่าและคลี่ลำดับที่ซ้อนกัน • เชื่อมต่อด้วย `.lazy` เพื่อหลีกเลี่ยงการจัดสรรพื้นที่สำหรับค่าระหว่างทาง ถัดไป: อาร์เรย์สองมิติและคอลเลกชันที่ซ้อนกัน

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

บทเรียน “Map, Filter และ Reduce บนอาร์เรย์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “Map, Filter และ Reduce บนอาร์เรย์”

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

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

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

บทเรียน “Map, Filter และ Reduce บนอาร์เรย์” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การสร้างและเปลี่ยนแปลงอาร์เรย์
  2. การเรียงลำดับ การค้นหา และการแบ่งส่วน
  3. Map, Filter และ Reduce บนอาร์เรย์
  4. อาร์เรย์สองมิติและคอลเลกชันซ้อนกัน
← กลับไปที่ Swift Academy