Swift判断二个数组中的全部元素是否相等

 


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

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

一个数组是否包含另外一个数组全部元素spa

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

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

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


Demo点此io

 

//
//  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;
    }
    
}
相关文章
相关标签/搜索