iOS Swift:跟踪和存储数组中所有重复值的索引?

我最近问了这个问题: iOS Swift:如何存储数组中所有重复值的索引?

我提供了我的问题的确切答案,但我发现我不能用它来实现我的代码中需要的东西。

我试图存储一个Date数组的任何重复值的所有索引,并存储在另一个数组[ [Int] ]

例如,这是我的Date数组:

 let dates = [2016-01-02 08:00:00 +0000, 2016-01-02 08:00:00 +0000, 2016-02-02 08:00:00 +0000, 2016-03-02 08:00:00 +0000, 2016-05-01 08:00:00 +0000, 2016-05-01 08:00:00 +0000] 

我想要做的,类似于我以前的问题是将所有重复的Date值的所有索引存储到一个单独的数组。

例如,以下数组将包含:

 repeatedIndices = [ [0, 1], [2], [3], [4, 5] ] 

其中指数01包含重复date2016-01-02 08:00:00 +0000和指数45包含重复date2016-05-01 08:00:00 +0000

我以前的问题有一个答案,它提供了一个[ String: [Int] ] ,并作为一个初学者,我不知道如何操作它来处理我的代码,因为字典是无序的 ,我需要一个有序的数组。

如果有必要,请标记为重复,但我不想编辑问题,并取消标记答案,因为这是不公平的。

谢谢。

使用带有示例值的[Date:[Int]]字典,

 var duplicatedDict : [Date:[Int]] = [:] for (index,date) in datesArray.enumerated() { if(duplicatedDict[date] == nil) { duplicatedDict[date] = [index] }else { duplicatedDict[date]?.append(index) } } debugPrint(duplicatedDict) 

到目前为止,我们在控制台中的结果如此之好

[2016-02-02 08:00:00 +0000:[2],2016-05-01 08:00:00 +0000:[5,6],2016-03-02 08:00:00 +0000: [3,4],2016-01-02 08:00:00 +0000:[0,1]]

然后我们需要遍历已sorting的字典键并将每个键数组中的值添加到数组中

 func returnValuesOrdered() ->[[Int]]{ var result : [[Int]] = [] for key in duplicatedDict.keys.sorted(by: {$0 < $1}) { result.append(duplicatedDict[key]!) } debugPrint(result) return result } 

导致在控制台

[[0,1],[2],[3,4],[5,6]]

希望这可以帮助你