【问题标题】:How do I compare two array Objects - Swift 4如何比较两个数组对象 - Swift 4
【发布时间】:2017-12-26 11:28:06
【问题描述】:

我有 2 个 [Any] 类型的数组 - 字典对象
其他数组包含其他对象集[Any](第二个数组对象包含在第一个数组中)

我需要找到第二个数组元素的第一个数组的索引

例如:-

let firstArray = [["key1":6],["key2":8],["key3":64],["key4":68],["key5":26],["key6":76]]

let secondArray = [["key3":64],["key6":68]]

如何找到secondArray 元素的firstArray 索引

【问题讨论】:

  • 您是说要查找整个第二个数组作为第一个数组的子数组吗?你的问题不清楚
  • @DuncanC:完全正确。第二个数组元素包含在第一个中。

标签: ios arrays swift enumerate


【解决方案1】:
let index = firstArray.index{$0 == secondArray[0]};
print("this value ", index);

将打印 optional(2) ,基本上是 2

【讨论】:

  • 使用该方法的Array.index(where:) 可能会更好,以便清楚您在做什么。使用尾随闭包语法会使读者很难知道你在做什么。
【解决方案2】:

首先,您从secondArray 获取密钥。然后,您尝试在您的firstArray 中找到键的索引。请注意,如果键不存在,某些值可能为零。

let firstArray = [["key1":6],["key2":8],["key3":64],["key4":68],["key5":26],["key6":76]]
let secondArray = [["key3":64],["key6":68], ["key8": 100]]

let indexes = secondArray
    .map({ $0.first?.key }) //map the values to the keys
    .map({ secondKey -> Int? in
        return firstArray.index(where:
            { $0.first?.key == secondKey } //compare the key from your secondArray to the ones in firstArray
        )
    })

print(indexes) //[Optional(2), Optional(5), nil]

我还添加了一个结果为 nil 的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2018-06-13
    • 1970-01-01
    相关资源
    最近更新 更多