ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift Language) sort, map, filter, reduce
    Swift/Tips & Tricks 2021. 9. 29. 13:57

    sort, sorted

    sort: 자신 (array) 를 정렬

    sorted: array 를 정렬해서 return (새로운 값에 할당, array 자체는 그대로 유지)

     

    var numArr = [1,3,2,1,5]
    
    let newArr = numArr.sorted() 
    // newArr: [1,1,2,3,5], numArr: [1,3,2,1,5]
    
    numArr.sort() 
    // numArr: [1,1,2,3,5]
    
    
    numArr.sort(by: >)
    // decending order. 
    // numArr: [5,3,2,1,1]

     

    map

    array의 각 element 에 대하여 어떤 logic 을 수행, 

    logic 이 적용된 각 element 를 새로운 array 로 묶어 return ( 순서 유지)

     

    let numArr = [1,3,2,1,5]
    
    // 1. 각 element 에 2 를 곱한 값을 새로운 array 에 저장
    
    
    // 1.1 가장 기초적인 mapping 형태
    let mappedArr = numArr.map { element in 
    	return element * 2
    }
    // mappedArr : [2,6,4,2,10]
    
    
    // 1.2 '$' 를 사용하는 경우 
    let mappedArr2 = numArr.map { $0 * 2 } 
    // Swift 가 각 element 를 $0 이라는 값에 자동으로 넣어줌. 이 때 return 생략 가능 (한줄 코드)
    // mappedArr2 : [2,6,4,2,10]
    
    
    
    // 2. 각 element 를 Int type 에서 string type 으로 바꾼 array 
    
    
    // 2.1 input, return type 을 지정해서 mapping 하는 경우
    let mappedArr3 = numArr.map { (num: Int) -> String in 
    	return "\(num)"
    }
    // mappedArr3 : ["1","3","2","1","5"
    
    
    // 2.2 '$' 를 사용하는 경우 
    let mappedArr4 = numArr.map { "\($0)" } 
    // Swift 가 각 element 를 $0 이라는 값에 자동으로 넣어줌. 이 때 return 생략 가능 (한줄 코드)
    // mappedArr4 : ["1","3","2","1","5"

     

    filter

    array 내에서 어떤 condition 을 만족하는 값들만 새로운 array 로 묶어 return (순서 유지)

    let numArr = [1,3,2,1,5,6]
    
    
    let oddNumbers = numArr.filter { element in 
    	return element % 2 == 1 
    }
    // oddNumbers : [1,3,1,5]
    
    
    // return 없이, $ 활용
    let evenNumbers = numArr.filter {
    	$0 % 2 == 0
    }
    //evenNumbers: [2,6]

     

    reduce

    array 의 각 element 들을 logic 에 따라 하나의 값으로 합쳐서 return 

    let numArr.= [1,3,2,1,5,6]
    
    let reduced = numArr.reduce(0) { result, element in 
    	return result + element
    }
    // reduced: 18
    
    let reduced2 = numArr.reduce(0) { $0 + $1 }
    // reduced2: 18

     

Designed by Tistory.