[swift] Closure & Collection **연습하기(reduce, filter, map)

2023. 2. 24. 23:10👩🏻‍💻 ios 앱개발 ( swift )

728x90

filter --> 특정 조건을 만족하는 배열 원소들만 가져올 수 있다.

item 전체를 가공시켜서 새로운 Item 만들기.

예) 모든 배열 요소에 90% 할인된 가격 적용  --> map 

 

 

배열의 값들을 통해 하나의 값을 도출 -> reduce

ex) item들의 총합을 구할 때

reduce 함수는 초기값을 설정해야함.
클로져 자리 : result 와 Int 변수를 받아서 또다른 result 반환

price 변수를 통해 배열의 값들이 차례대로 들어옴

 

reduce는 딕셔너리에서도 유용하게 사용가능

 

 

도전과제

1. 이름의 Array 생성하고, reduce 이용해서 이름 모두 연결

2. 1에서 생성된 array에서 글자가 3개 이상인 이름을 filter로 걸러내고, 걸러낸 이름을 reduce를 이용해서 연결하기

 

3. 학생 딕셔너리 생성(키:이름, value: 나이), filter를 이용해서 20세 이상인 학생만 걸러내기

4. 3번에서 걸러낸 학생들... map을 이용해서 이름만 array로 만들기

 

 

//도전과제
//1. 이름의 Array 생성하고, reduce 이용해서 이름 모두 연결

let names = ["유연석", "에이멘", "귀여운칠봉이", "푸앙"]

let sentence = names.reduce("") { result, name in
    return result + " " + name
}


//2. 1에서 생성된 array에서 글자가 3개 이상인 이름을 filter로 걸러내고, 걸러낸 이름을 reduce를 이용해서 연결하기

//M1
let filterResult = names.filter { name in
    return name.count >= 3
}

//M2
let allName = names.filter { name in
                        return name.count >= 3
                        }.reduce("") { result, name in
                        return result + " " + name
                        }



//3. 학생 딕셔너리 생성(키:이름, value: 나이), filter를 이용해서 20세 이상인 학생만 걸러내기

let student = ["김감자": 24, "유연석":40, "문가영": 27, "솜펀치":10, "이지후":13]

let old = student.filter{stu in
    return stu.value >= 20
}


//4. 3번에서 걸러낸 학생들... map을 이용해서 이름만 array로 만들기

let nameArr = old.map{stu in
    return stu.key
}

 

reduce, filter, map은 실무에서도 많이 쓴다!!

 

 

'👩🏻‍💻 ios 앱개발 ( swift )' 카테고리의 다른 글

[swift] Class 상속  (0) 2023.02.27
[swift] Class vs. Structure  (0) 2023.02.27
[swift] Closure  (0) 2023.02.22
[swift] Collection  (1) 2023.02.17
[swift] optional  (0) 2023.02.16