Как удалить дубликаты объектов из массива объектов в Swift

-1

У меня есть два массива из веб-службы, мне нужно выяснить, имеют ли Array2 те же объекты, что и Array1. Итак, для этого я использую ниже код:

var arr1 = [CustomObject]()
var arr2 = [CustomObject]()
var arr3 = [CustomObject]()
var arr4 = [CustomObject]()


self.arr3 = self.arr1 + self.arr2  //concatenate two arrays 
self.arr4 =  Array(Set(arr3))   // find out uniq values

//  below is the extension

extension Array where Element : Hashable {
var unique: [Element] {
    var uniqueValues: [Element] = []
    forEach { item in
        if !uniqueValues.contains(item) {
            uniqueValues += [item]
         }
       }
      return uniqueValues
    }
 }

Но на этой строке отображается ошибка "Массив (Set (arr3))"
Ошибка: - для добавления значения в Set

  • 0
    Какая ошибка? Является ли CustomObject Hashable ?
  • 0
    Ошибка связана с хэш-значениями
Показать ещё 4 комментария
Теги:
arrays

2 ответа

0

Обзор:

  • Чтобы набор Hashable пользовательский класс/структуру, пользовательский класс/структура должен соответствовать protocol Hashable и косвенно Equatable protocol.
  • Ниже приведен пример использования struct, и вы можете использовать класс.

Код:

struct CustomObject : Hashable{

    var something : Int //It is just an example, this could be any type, but some how you should find a way to compute the hash value.

    //MARK: Hashable
    var hashValue: Int {

        return something
    }
}

//MARK: CustomObject - Equatable
func ==(lhs: CustomObject, rhs: CustomObject) -> Bool {

    return lhs.something == rhs.something
}
  • 0
    Я использовал выше, но как указать его в «self.arr4 = Array (Set (arr3))»
  • 0
    self.arr4 = Array(Set(arr3)) должен работать, просто делая CustomObject Hashable
0

Попробуй это:

var arr1 = ["A","B","C"]
var arr2 = ["A","B","C"]

if Set(arr1).symmetricDifference(arr2).isEmpty {
    print("The Arrays Match")
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню