如何确定一个数组是否包含 Swift 中另一个数组的所有元素? [英] How to determine if one array contains all elements of another array in Swift?

查看:56
本文介绍了如何确定一个数组是否包含 Swift 中另一个数组的所有元素?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 2 个数组:

var list:Array<Int> = [1,2,3,4,5]
var findList:Array<Int> = [1,3,5]

我想确定 list 数组是否包含所有 findList 元素.

I want to determine if list Array contains all findList elements.

顺便说一下,元素也可以是 String 或其他类型.

By the way, elements might be String as well or other type.

怎么做?

我知道 Swift 提供了适用于一项的 contains 方法.

I know that Swift provides contains method that works with one item.

推荐答案

您可以使用 NSSet 为您完成所有工作,而不是遍历数组并自己进行过滤.

Instead of iterating through arrays and doing filtering yourself, you can use NSSet to do all the work for you.

var list:Array<Int> = [1,2,3,4,5]
var findList:Array<Int> = [1,3,5]

let listSet = NSSet(array: list)
let findListSet = NSSet(array: findList)

let allElemtsEqual = findListSet.isSubsetOfSet(otherSet: listSet)

NSSet 在检查它是否包含任何对象时比数组快得多.事实上,这就是它的设计目的.

NSSet is a lot faster than arrays at checking if it contains any object. In fact it's what it's designed for.

使用 Swift 的内置 Set.

Using Swift's built-in Set.

let list = [1,2,3,4,5]
let findList = [1,3,5]
let listSet = Set(list)
let findListSet = Set(findList)
//**Swift 4.2 and Above**
let allElemsContained = findListSet.isSubset(of: listSet)

//below versions
//let allElemsContained = findListSet.isSubsetOf(listSet)

这篇关于如何确定一个数组是否包含 Swift 中另一个数组的所有元素?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆