所以,我有循环,我得到[Int]
并且Array
可能只有一个元素,可能有几个元素。那些数组可能是相同的,也可能不同。
我想创建Array
唯一的数组[Int]
。怎么做?当我尝试按Set
创建时,我看到了
[Int] not hashable
我的代码:
for i in 0..<someData.count {
someData?[i].db.value(forKey: "value") as! [Int] // here I get [Int]
//here I'd like to create an array of unique arrays from from the line above
}
答案 0 :(得分:1)
var values:[Int] = [] {
didSet{
var uniqueValues = [Int]()
var addedValues = Set<Int>()
for value in values {
if !addedValues.contains(value) {
addedValues.insert(value)
uniqueValues.append(value)
}
}
values = uniqueValues
}
}
values是你的数组,它只包含唯一的值。希望这就是你要找的。 p>
答案 1 :(得分:1)
您也可以实现自己的Hashable数组
import Foundation
internal struct HashableIntArray: Hashable {
var value: [Int]
var hashValue: Int { return value.reduce(0, +).hashValue }
}
internal func == (lhs:HashableIntArray,rhs: HashableIntArray) -> Bool {
return lhs.value == rhs.value
}
let array = [HashableIntArray(value: [1,1,2]), HashableIntArray(value: [1,2,2]), HashableIntArray(value: [1,1,2])]
let set = Set(array)
print(array) // [HashableIntArray(value: [1, 1, 2]), HashableIntArray(value: [1, 2, 2]), HashableIntArray(value: [1, 1, 2])]
print(set) // [HashableIntArray(value: [1, 2, 2]), HashableIntArray(value: [1, 1, 2])]