我有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
} 
 这个实现是丑陋的.