我最近问了这个问题: 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] ]
其中索引0
和1
包含重复的日期2016-01-02 08:00:00 +0000
和索引4
,5
包含重复的日期2016-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]]
然后我们需要循环排序的字典键,并将每个键数组中的值添加到数组中
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]]
希望这对你有帮助