Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了arrays – Array包含一个完整的子数组大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

在 Swift中,如何检查数组是否包含完整的给定子数组?例如,是否有一个包含这样的函数: let mainArray = ["hello", "world", "it's", "a", "beautiful", "day"] contains(mainArray, ["world", "it's"]) // would return true contains(mainArray, ["wor
Swift中,如何检查数组是否包含完整的给定子数组?例如,是否有一个包含这样的函数

let mainArray = ["hello","world","it's","a","beautiful","day"]
contains(mainArray,["world","it's"])   // would return true
contains(mainArray,"it"])   // would return false
contains(mainArray,"a"])   // would return false - not adjacent in mainArray

解决方法

您可以使用更高级别的功能来执行此操作,如下所示:

func indexOf(data:[String],_ part:[String]) -> Int? {
    // This is to prevent construction of a range from zero to negative
    if part.count > data.count {
        return nil
    }

    // The index of the match Could not exceed data.count-part.count
    return (0...data.count-part.count).indexOf {ind in
        // Construct a sub-array from current index,// and compare its content to what we are looking for.
        [String](data[ind..<ind+part.count]) == part
    }
}

函数返回第一个匹配的索引(如果有),否则返回nil.

您可以按如下方式使用它:

let mainArray = ["hello","day"]
if let index = indexOf(mainArray,"it's"]) {
    print("Found match at \(index)")
} else {
    print("No match")
}

编辑为通用数组的扩展…

现在可以将其用于Equatable类型的任何同类数组.

extension Array where Element : Equatable {
    func indexOfContiguous(subArray:[Element]) -> Int? {

        // This is to prevent construction of a range from zero to negative
        if subArray.count > self.count {
            return nil
        }

        // The index of the match Could not exceed data.count-part.count
        return (0...self.count-subArray.count).indexOf { ind in
            // Construct a sub-array from current index,// and compare its content to what we are looking for.
            [Element](self[ind..<ind+subArray.count]) == subArray
        }
    }
}

大佬总结

以上是大佬教程为你收集整理的arrays – Array包含一个完整的子数组全部内容,希望文章能够帮你解决arrays – Array包含一个完整的子数组所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: