当前位置: 首页 > 面试题库 >

从自定义对象数组中删除重复项Swift

宋耀
2023-03-14
问题内容

我有一个自定义类,定义如下:

class DisplayMessage : NSObject {
var id : String?
var partner_image : UIImage?
var partner_name : String?
var last_message : String?
var date : NSDate?
}

现在我有一个数组myChats = [DisplayMessage]?。该id字段对于每个DisplayMessage对象都是唯一的。我需要检查数组并从中删除所有重复项,从本质上确保数组中的所有对象都具有唯一的id。我已经看到了一些使用的解决方案NSMutableArrayEquatable但是我不确定如何在这里调整它们。我也知道,Array(Set(myChats))但这似乎不适用于自定义对象数组。


问题答案:

您可以使用一组字符串来完成此操作,如下所示:

var seen = Set<String>()
var unique = [DisplayMessage]
for message in messagesWithDuplicates {
    if !seen.contains(message.id!) {
        unique.append(message)
        seen.insert(message.id!)
    }
}

想法是保留一组到目前为止我们已经看到的所有ID,循环遍历所有项目,然后添加那些我们尚未看到的ID。



 类似资料:
  • 假设对象数组如下所示: 如果标签和颜色相同,则会出现重复条目。在这种情况下,id=1和id=5的对象是重复的。 根据注释中的请求,这里是期望的结果:

  • 我很难从自定义对象的ArrayList中删除重复项。 删除重复项 自定义对象等于() 删除重复项后的输出 关于为什么它实际上没有删除重复项,有什么提示吗?或者它实际上是通过将副本替换为原始副本来删除副本?不知道这里发生了什么。

  • 问题内容: 我有一个包含对象数组的对象。 我想知道什么是从数组中删除重复对象的最佳方法。举例来说,事物……东西将变成…… 问题答案: 一种原始方法是:

  • 问题内容: 我使用下面的代码行遍历数据库中的一个表: 如果我打印出数组: 我会得到这个: 但是我想摆脱数组中的重复项,所以我使用 我得到下面的奇怪结果,这不是我想要的结果: 理想情况下,我认为它应该返回以下内容: 我该怎么做才能正确处理?我使用了错误的PHP语法/默认功能吗? 问题答案: 该功能将为您完成此操作。您只需要添加标志:

  • 问题内容: 我有一个看起来像这样的数组: 而且我需要删除重复项,以便保留类似以下内容: 我尝试安装underscore.js并使用._uniq,但这似乎仅在对象中出现一对时才起作用。我似乎无法使它跨多个键工作。 当我尝试类似的东西: 我只得到前三个唯一值(每个年级一个)。但是我需要所有年级和领域的唯一值。是否有一种简单的方法将两个键都馈给_.uniq函数? 最终,我需要一个列表,其中每个唯一的等级

  • 假设我有这样的对象数组: 如何从每个对象中删除时间和单词属性?我的输出应该是这样的: