Swift判断二个数组中的所有元素是否相等

前端之家收集整理的这篇文章主要介绍了Swift判断二个数组中的所有元素是否相等前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

只包含一种元素类型的array是否相同

func arrayIsEqualToASortOfArray(firstArray: NSArray,thenArray: NSArray) -> Bool

一个数组是否包含另一个数组所有元素

func arrayIsContain(firstArray: NSArray,isContainedByArray: NSArray) -> Bool

当数组中元素类型不止一种判断二个数组中的元素是否相等,不能有元素重复

func arrayIsEqual(firstArray: NSArray,thenArray: NSArray) -> Bool


Demo点此

//
//  NSArray+Extra.swift
//  判断二个数组中的所有元素是否相等
//
//  Created by codeIsMyGirl on 16/6/13.
//  Copyright © 2016年 codeIsMyGirl. All rights reserved.
//

import Foundation

extension NSObject {
    
    // MARK:
    // MARK: 只包含一种元素类型的array 是否相同
    /// 只包含一种元素类型的array 是否相同
     func arrayIsEqualToASortOfArray(firstArray: NSArray,thenArray: NSArray) -> Bool {
 
        // 当所有元素都是 字符串 类型
        if firstArray[0].isKindOfClass(NSString) {
            
            // 类型转换
            let firstA = firstArray as! [String];
            
            let thenA = thenArray as! [String];

            for i in firstA {
                
                // 如果出现不相等 直接返回
                if thenA.contains(i) == false {
                
                    return false;
                }
            }
            
            // 执行到这里说明全部相等
            return true;
        }
        
        // 当所有元素都是 数字 类型
        if firstArray[0].isKindOfClass(NSNumber) {
            
            // 类型转换
            let firstA = firstArray as! [NSNumber];
            
            let thenA = thenArray as! [NSNumber];
            
            for i in firstA {
                
                // 如果出现不相等 直接返回
                if thenA.contains(i) == false {
                    
                    return false;
                }
            }
            
            // 执行到这里说明全部相等
            return true;
        }
 
        return false;
    }
 
    // MARK:
    // MARK: 一个数组是否包换另一个数组所有元素
    /// 一个数组是否包换另一个数组所有元素
    func arrayIsContain(firstArray: NSArray,isContainedByArray: NSArray) -> Bool {
 
        if firstArray.count > isContainedByArray.count {
            
            print("被包含数组长度小于包含数组长度");
            
            return false;
        }
        
        return publicCode(firstArray,thenArray: isContainedByArray);

    }

    // MARK:
    // MARK: 二个数组中的所有元素是否相等
    /// 用于数组中元素不止一种 判断二个数组中的所有元素是否相等
    func arrayIsEqual(firstArray: NSArray,thenArray: NSArray) -> Bool {
        
        if firstArray.count != thenArray.count {
            
            return false;
        }
        
        return publicCode(firstArray,thenArray: thenArray);
    }
   
}

// MARK:
// MARK: 抽取
extension NSObject {
    
    
    // MARK:
    // MARK: 公用代码
    /// 公用代码
    private func publicCode(firstArray: NSArray,thenArray: NSArray) -> Bool {
        
        let count = firstArray.count;
        
        // 相同的标记
        var rightCount = 0;
        
        for i in 0..<count {
            
            // 获取元素
            let obj = firstArray[i];
            
            // 判断 NSString类型
            if obj.isKindOfClass(NSString) {
                
                for j in thenArray {
                    
                    // 获得所有 相同类型
                    if j.isKindOfClass(NSString) {
                        
                        let thenObj = j as! String;
                        
                        if obj as! String == thenObj {
                            
                            rightCount += 1;
                        }
                        
                    }
                }
                
            }
            
            // 判断 NSNumber类型
            if obj.isKindOfClass(NSNumber) {
                
                for j in thenArray {
                    
                    // 获得所有 相同类型
                    if j.isKindOfClass(NSNumber) {
                        
                        let thenObj = j as! NSNumber;
                        
                        if obj as! NSNumber == thenObj {
                            
                            rightCount += 1;
                        }
                        
                    }
                }
                
            }
            
            
        }
        
        return count == rightCount;
    }
    
}

猜你在找的Swift相关文章