2016-09-03 2 views
-1

배열이있는 사전에서 최대 또는 최소 요소를 찾는 Swift에서이 두 가지 예제에 대한 코드를 작성하는 방법을 찾으려고합니다. 배열리스트의 2 차원 배열.Swift - 사전 및 배열의 ​​배열에서 2 차원 배열을 찾는 방법

예 # 1 - 두 차원 배열의 최대 요소를 찾기

let myArray = [["A_1", "1"], ["A_2", "0"], ["A_3", "25"], ["A_4", "3"]] 
print(myArray.maxElement()!) // <--- it doesn't work properly 

Output: 25 

예 # 2 - 키를 가지고있는 (가장 높은 항목은 계산) 배열과 사전에 최대 요소

let myList = [("A_1", [["C", "C"]]), ("A_2", [["A", "A"], ["B", "B"], ["C", "C"]]), ("A_3", [])] 

.... //Trying to figure it out what kind of code to add here... 


Output: A_2 //has 3 items in array 
+0

사전에서 최대 또는 최소값을 계산하는 맞춤법을 사용하여 문자열이 아닌 숫자 값의 최대, 최소값을 찾을 수 있습니다. –

+1

2 가지 예에 대한 예상 출력은 어떻게됩니까? –

+0

@CodeDifferent 위 출력물을 보았습니까? 그것이 내가 찾고있는 것입니다. – HotDudeSmith

답변

1

글을 쓰는 방법은 많습니다. 여기에는 하나가 있습니다 :

let myArray = [["A_1", 1], ["A_2", 0], ["A_3", 25], ["A_4", 3]] 
let result1 = myArray.reduce(myArray.first!) { aggregate, element in 
    if let aggregateValue = aggregate[1] as? Int, 
     let elementValue = element[1] as? Int where aggregateValue < elementValue { 
     return element 
    } else { 
     return aggregate 
    } 
}[1] 

let myList = [("A_1", [["C", "C"]]), ("A_2", [["A", "A"], ["B", "B"], ["C", "C"]]), ("A_3", [])] 
let result2 = myList.reduce(myList.first!) { aggregate, element in 
    aggregate.1.count < element.1.count ? element : aggregate 
}.0 

print(result1) 
print(result2) 

기본적으로 reduce은 시드 값 (각 배열의 첫 번째 요소)으로 시작한 다음 배열을 반복하여 어느 것이 최대 전체인지 확인합니다.

+0

와우, 너무 많은 의미가 있습니다. 나는이 부분에 대해 생각하지 않았다. 나는 항상 가장 간단한 부분을 찾고있다. 도와 줘서 고마워! – HotDudeSmith

0

예제 # 1에서 정말 좋은 예제를 발견했습니다. 어쩌면 당신은 더 나은 것으로 사물을 바꿀 수 있습니다. 그러나 @CodeDifferent가 제공 한 것은 정말 좋은 예입니다. 내가 발견 한 것은이 예제를 볼 수 있습니다

Swift - How to find Largest value from an array and identify which array it came from

나는 당신이 그것을보고 싶다 생각했다.

+0

정말 좋은 예입니다! 공유해 주셔서 감사합니다. – HotDudeSmith

관련 문제