当前位置: 首页 > 知识库问答 >
问题:

Swift:获取由某个属性筛选的对象数组的索引

谭山
2023-03-14

我有一个自定义对象数组,将ID值作为属性。现在我有了另一个选定对象数组(由IDs选定)。如何通过筛选选定的ID(第二个数组)来获得第一个数组的索引?

我希望避免循环,并考虑使用CompactMap或类似的解决方案。

struct MyObject {
    var ID: Int
    var name: String
}

let myObjects = [
    MyObject(ID: 3, name: "AAAA"),
    MyObject(ID: 5, name: "BBBB"),
    MyObject(ID: 12, name: "CCCC"),
    MyObject(ID: 15, name: "DDDD"),
    MyObject(ID: 20, name: "EEEE"),
    MyObject(ID: 21, name: "GGGG"),
    MyObject(ID: 22, name: "HHHH"),
    MyObject(ID: 23, name: "IIII"),
]
let selectedIds = [5, 20, 23]

// How to get an array of indices for selectedIds
// Expected result [1, 4, 7]

共有1个答案

滕星纬
2023-03-14
myObjects.enumerated()   // Pair-up elements and their offsets
    .filter { selectedIds.contains($0.element.ID) }  // Get the ones you want
    .map { $0.offset }  // Extract the offsets
 类似资料:
  • 有一个名为的类。 并且我有一个对象的数组。我现在需要的是将该数组中所有对象的s提取到一个新数组中。 我也发现了这个类似的问题。但是它是在Objective-C中的,所以它使用来实现这一点。 我怎么能在斯威夫特做到这一点呢?

  • 问题内容: 有一个叫的课程。 而且我有一系列对象。我现在需要将数组中所有这些对象的s 提取到新数组中。 我也发现了类似的问题。但是它在Objective-C中,因此可以用来完成此任务。 如何在Swift中执行此操作? 问题答案: 您可以使用方法,将某种类型的数组转换为另一种类型的数组-在您的情况下,从的数组转换为的数组:

  • 我如何过滤对象数组,以移除那些没有最大年龄值的对象。

  • 我需要获得的模块,与那些张贴的地方等于“维也纳”,我无法消除那些没有通过验证。 这是JSON。 预期结果 这就是我正在尝试的 实际结果 我无法删除那些不符合条件的帖子。

  • 用例是将对象数组转换为基于字符串或函数的哈希映射,所提供的字符串或函数用于求值并作为哈希映射中的键和作为对象本身的值。使用这种方法的一个常见情况是将对象数组转换为对象的哈希映射。 下面是JavaScript中的一个小片段,用于将对象数组转换为哈希映射,由Object的属性值索引。您可以提供一个函数来动态(运行时)评估哈希映射的键。希望这对将来的人有帮助。

  • 问题内容: 这个问题很简单,但是由于我是python的新手,所以我从php过来了,因此遇到了一些错误。 我有以下简单的课程: 在PHP中,我可以执行以下操作: 我该如何在python中做到这一点? 问题答案: 要访问对象的字段或方法,请使用dot : 如果将在运行时定义字段名称,请使用内置函数: