ios – 如何在swift中获取2数组的常见元素列表

前端之家收集整理的这篇文章主要介绍了ios – 如何在swift中获取2数组的常见元素列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有2个数组:
fruitsArray = ["apple","mango","blueberry","orange"]
vegArray = ["tomato","potato","blueberry"]

如何获取这两个数组中的常用项目列表

ouptput = ["mango","blueberry"]

我不能使用if(array,string),因为我想比较2个数组.
请帮忙

解决方法

你不需要一套(如上面提到的注释).

您可以使用一般的功能,类似于苹果在其Swift Tour中使用的功能,因此避免投射:

func anyCommonElements <T,U where T: SequenceType,U: SequenceType,T.Generator.Element: Equatable,T.Generator.Element == U.Generator.Element> (lhs: T,rhs: U) -> Bool {
    for lhsItem in lhs {
        for rhsItem in rhs {
            if lhsItem == rhsItem {
                return true
            }
        }
    }
    return false
}

函数可以使用任何两个数组(SequenceTypes),如果它们的任何元素相同,则返回true.

你可以简单地修改这个泛型函数来打包一个字符串数组,然后返回.

例如:

func arrayOfCommonElements <T,rhs: U) -> [T.Generator.Element] {
    var returnArray:[T.Generator.Element] = []
    for lhsItem in lhs {
        for rhsItem in rhs {
            if lhsItem == rhsItem {
                returnArray.append(lhsItem)
            }
        }
    }
    return returnArray
}

这样的用法

var one = ["test2","dog","cat"]
var other = ["test2","cat","dog"]


var result = arrayOfCommonElements(one,other)

print(result) //prints [test2,dog,cat]

这里增加的好处是这个函数也可以用于所有相同类型的数组.所以后来如果你需要比较两个[myCustomObject]数组,一旦它们都符合相当的,你就全部设置好了! (双关语)

编辑:(对于非常见的元素),你可以这样做

func arrayOfNonCommonElements <T,rhs: U) -> [T.Generator.Element] {

    var returnArray:[T.Generator.Element] = []
    var found = false

    for lhsItem in lhs {
        for rhsItem in rhs {
            if lhsItem == rhsItem {
                found = true
                break
            }
        }

        if (!found){
            returnArray.append(lhsItem)
        }

        found = false
    }
    for rhsItem in rhs {
        for lhsItem in lhs {
            if rhsItem == lhsItem {
                found = true
                break
            }
        }

        if (!found){
            returnArray.append(rhsItem)
        }

        found = false
    }
    return returnArray
}

这个实现是丑陋的.

猜你在找的iOS相关文章