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

Swift:从数组中删除特定对象的更好方法?

淳于鹏
2023-03-14
问题内容

我试图通过代码提高效率,但是我却放屁了。我编写的这段代码很好用,并且完全满足我的需要:它检查一个数组并删除一个未知索引处的Object。但是我觉得有一种更好,更有效的编写方法。我去了Array.remove(at
:),但这需要一个已知的索引。我正在使用大的O表示法,并且不知道如何使它更易于处理。有任何想法吗?

 // create a new object array
 var sort : [MyCustomObject] = []

//iterate through my object array

        for i in objectArray{
            if i === objectToRemove{
            }
            else{
                sort.append(i)
            }
        }

     // set old array to sort, which no longer has the unwanted object 
        self.objectArray = sort

问题答案:

使用firstIndex(where:)index(where:)
Swift 4.1 和更早版本中先前称为)使用谓词在数组中搜索对象{ $0 === objectToRemove },然后调用remove(at:)该数组将其删除:

if let idx = objectArray.firstIndex(where: { $0 === objectToRemove }) {
    objectArray.remove(at: idx)
}

这使您可以搜索对象是否Equatable存在。



 类似资料:
  • } 现在,我的要求是当我单击“删除列”时,它会进入此方法,并且我想删除与之关联的特定列和行。 提前谢谢你的帮助。

  • 问题内容: 在我的应用程序中,选择单元格时在数组中添加了一个对象,重新选择单元格时取消选择并删除了对象。我使用了该代码,但给了我错误。 它给了我2像这样的错误: 问题答案: 雨燕等同的是: 如果对象是唯一的 。完全没有必要强制使用 该API 也可以使用,但这会导致不必要的隐式桥强制转换为。 如果同一对象多次出现,请使用。但是,在像数据源数组这样的情况下,将索引与特定对象相关联的情况是可取的,因为它

  • 问题内容: 我有一个自定义类,定义如下: 现在我有一个数组。该字段对于每个对象都是唯一的。我需要检查数组并从中删除所有重复项,从本质上确保数组中的所有对象都具有唯一的。我已经看到了一些使用的解决方案,但是我不确定如何在这里调整它们。我也知道,但这似乎不适用于自定义对象数组。 问题答案: 您可以使用一组字符串来完成此操作,如下所示: 想法是保留一组到目前为止我们已经看到的所有ID,循环遍历所有项目,

  • 问题内容: 文件: 有没有办法从数组中提取特定对象?IE如何从项数组中提取ID为23的整个项对象。 我努力了: 但是我很确定我没有正确使用’pull’。据我了解,pull将从数组中拉出字段,而不是对象。 关于如何将整个对象从数组中拉出的任何想法。 另外,我尝试在mongoose / nodejs中执行此操作,也不确定这种类型的内容是否在mongoose API中,但我找不到它。 问题答案: 尝试.

  • 问题内容: 我需要从满足条件的数组中删除对象,我可以根据条件更新数组的对象,如下所示: 这正在工作 为了删除我正在这样做 但这不起作用,并给出此错误, ElasticsearchIllegalArgumentException [无法执行脚本]; 嵌套:ConcurrentModificationException; 错误:ElasticsearchIllegalArgumentException

  • 问题内容: 我有一个JSON: 我试图删除所有以 “ umb_” 开头的属性。这在json.net中可能吗? 输出将是这样的: 使用删除我能够做到,但是不能一次全部完成。 有什么建议吗? 问题答案: 您可以先解析字符串: 更新 或: 更新#2 您可以在子句中指定更多条件: 要么 或任何您需要的。