๐ก ๊ณ ์ฐจ ํจ์๋? ํจ์๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ์ฌ์ฉํ๊ฑฐ๋, ํจ์ ์คํ์ ๊ฒฐ๊ณผ๋ฅผ ํจ์๋ก ๋ฆฌํดํ๋ ํจ์
- map ํจ์ โ ๊ฐ ์์ดํ ์ ๋งคํํด์, ๋ณํํ์ฌ ์๋ก์ด ๋ฐฐ์ด์ ๋ฆฌํดํด์ค๋ค.
let numbers = [1, 2, 3, 4, 5]
numbers.map { num in
return "์ซ์: \(num)"
}
// numbers = ["์ซ์: 1", "์ซ์: 2", ... , "์ซ์: 5"]- filter ํจ์
โ ๊ธฐ์กด ๋ฐฐ์ด ๋ฑ์ ๊ฐ ์์ดํ ์ ์กฐ๊ฑด์ ํตํด ํ์ธ ํ, true์ธ ์์ดํ ์ ๊ฑธ๋ฌ๋ด์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฆฌํดํด์ค๋ค.
let names = ["Apple", "Black", "Circle", "Dream", "Blue"]
var array = names.filter {
return str.contains("B")
}
print(array) // ["Black", "Blue"]- reduce ํจ์
โ ๊ธฐ์กด ๋ฐฐ์ด ๋ฑ์ ๊ฐ ์์ดํ ์ ํด๋ก์ ๊ฐ ์ ๊ณตํ๋ ๋ฐฉ์์ผ๋ก ๊ฒฐํฉํด์ ๋ง์ง๋ง ๊ฒฐ๊ณผ๊ฐ์ ๋ฆฌํดํ๋ค.
var numbersArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
var array = numbersArray.reduce(0) { result, item in
return result + item
}
print(array) // 55- map / filter / reduce ํ์ฉ
var numbersArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// ์์ ๋ฐฐ์ด ์ค์, ํ์๋ง ์ ๊ณฑํด์, ๊ทธ ์ซ์๋ฅผ ๋ค ๋ํ ๊ฐ์?
var newResult = numbersArray.filter { $0 % 2 != 0 }
.map { $0 * $0 }
.reduce(0) { $0 + $1 }
print(newResult) // 1, 9, 25, 49, 81 ===> 165- forEach ํจ์ โ ๊ฐ ์์ดํ ๋ณ๋ก ํน์ ์์ ์ ์คํํ๋ค.
let immutableArray = [1, 2, 3, 4, 5]
immutableArray.forEach { num in
print(num)
}
// 1, 2, 3, 4, 5- compactMap ํจ์ โ ์๋์ผ๋ก ์ต์ ๋ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ์๋ก์ด ๋ฐฐ์ด์ ๋ฆฌํดํด์ค๋ค.
let stringArray: [String?] = ["A", nil, "B", nil, "C"]
var newStringArray = stringArray.compactMap { $0 }
print(newStringArray) // ["A", "B", "C"]- flatMap ํจ์ โ ์ค์ฒฉ๋ ๋ฐฐ์ด์ ๊ฐ ๋ฐฐ์ด์ ์๋กญ๊ฒ ๋งคํํด์ ๋ด๋ถ ์ค์ฒฉ๋ ๋ฐฐ์ด์ ์ ๊ฑฐํ๊ณ ๋ฆฌํดํด์ค๋ค.
var nestedArray = [[1, 2, 3], [4, 5, 6], [10, 11, 12], [13, 14, 15]]
var numbersArray = nestedArray.flatMap { $0 }
// 1, 2, 3, 4, 5, ... , 13, 14, 15