Youngminah/TIL

map, filter, reduce

Youngminah opened this issue · 1 comments

Map

  • A object 리스트에서 B object 리스트로 변환시 사용
  • B로 변환 실패하면 nil을 넘김
  • 변환 결과에 nil 포함
  • CompactMap은 nil을 넘기지 않음
import UIKit

let stringValues = ["hi", "1", "3", "hello"]

/// Map vs CompactMap
let intValuesWithMap = stringValues.map {  string in
   return Int(string)
}
intValuesWithMap // [nil, 1, 3, nil]

let intValueWithCompactMap = stringValues.compactMap { string in
   return Int(string)
}
intValueWithCompactMap // [1, 3]
  • 간단한 사용법 예제
 for string in strArray{
    string += "box"
 }
 //한줄로 쓰기 가능.
 var resultArray = strArray.map({$0+"box"})

Filter

  • 말 그대로 특정 조건을 통과한 element들을 모아서 Array로 반환하는 함수
var filteredArray = moneyArray.filter({$0<1_1000})

Reduce

//초기 값이 0인것에다가 계속 moneyArray의 값을 누적 더해간다.
let moneyArray: [Int] = [1,2,3]
var sum = moneyArray.reduce(0, combine: +) //결과값 6
또는
var sum = moneyArray.reduce(0) { $0 + $1 }
var aString = resultArray.reduce("", combine: {$0 + $1 + "!!"})
//또는
var aString = resultArray.reduce("") {$0 + $1 + "!!"}

  • 수업외적 내용