2017-08-14 32 views
0

陣列內與最大的對象數組我有CLLocations數組的數組,我試圖尋找一種有發生最近根據其時間戳CLLocation對象數組。索引或實際列表都足夠了。獲取數組

到目前爲止,我想出了:

let latestList = listOfListOfLocations.index{$0.max{a,b in a.timestamp < b.timestamp} < $1.max{c,d in c.timestamp < d.timestamp}} 

,但我發現沒有運氣,不能讓我的頭輪它是相對較新的斯威夫特。任何幫助將不勝感激。

回答

0

首先得到每個數組的「submaxes」,然後拿這些的最大值,以獲得全局最大值。

let subArrayContainingMostRecentObject = listOfListOfLocations 
    .flatMap{ subarray in 
     return subarray 
      .max{ $0.timestamp < $1.timestamp } 
      .map{ submax in (subarray: subarray, submax: submax) } 
    } 
    .max{ $0.submax.timestamp < $1.submax.timestamp }?.subarray 
+0

@MartinR謝謝,稍後我會更新 – Alexander

+0

那太好了,謝謝,我怎麼也更改爲獲得指數? – user3599895

+0

@ user3599895哪個索引? – Alexander

0

不知道這是最充分的實現,但它的工作原理。

let mostRecent = listOfListOfLocations.max{$0.max{$0.timestamp < $1.timestamp}! < $1.max{$0.timestamp < $1.timestamp}!}?.max()

+0

你最好做一個通過每個子數組來獲得它們的最大值,然後通過submaxes數組來獲得全局最大值。否則這種方式,隨時隨地兩個數組進行比較,每個子陣列的submax必須重新計算 – Alexander