【发布时间】:2020-01-27 20:09:14
【问题描述】:
对不起,如果这是一个愚蠢的问题,但我尝试的一切似乎都是错误的! (我是 Swift 新手)。
我有 2 个字符串数组,我需要比较匹配项,然后返回一个数组,其中包含这些匹配项的索引位置 .... IE:
let array1 = ["abc", "def", "ghi", "jkl", "xyz", "uhr"]
let array2 = ["ghi", "xyz", "uhr"]
// Search array1 for instances of array2
// Result I want is: [2, 4, 5]
我缺少一个简单的功能吗?!提前感谢您的帮助。
【问题讨论】:
-
let result = array2.map({ array1.firstIndex($0) ?? -1 })或let result2 = array2.compactMap({ array1.firstIndex(of: $0) })?缺少案例:如果您在array1中有两次"ghi"会发生什么?如果array1中没有"ghi"会怎样? -
感谢您的帮助朋友 - 在这种情况下,数组 1 中的值将始终是唯一的。不过,您的第二点确实提出了一个问题....我想在某些情况下,数组 2 可能是 ["ghi", "xyz", "uhr", "zzz"] - 在这种情况下,"zzz" 不是存在于数组 1 中,理想情况下我需要忽略它....
-
那么 compactMap 和 firstIndex(of:) 应该可以正常工作
-
result2是使用带有闭包的“基本”方法的“最短”方法。但是,如果您是作为开发人员(而不仅仅是 Swift)开始的,那么为自己编写一个手册 for 或 foreach 循环以获取一些基本算法是没有问题的。
标签: arrays swift indexing compare