How to determine if one array contains all elements of another array in Swift?

后端 未结 12 1153
梦如初夏
梦如初夏 2020-12-13 17:47

I have 2 arrays:

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

I want to determine if list A

12条回答
  •  盖世英雄少女心
    2020-12-13 18:09

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

    var list:Array = [1,2,3,4,5]
    var findList:Array = [1,3,5]
    
    let listSet = NSSet(array: list)
    let findListSet = NSSet(array: findList)
    
    let allElemtsEqual = findListSet.isSubsetOfSet(otherSet: listSet)
    

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

    Edit: 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)
    

提交回复
热议问题