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;
    }
    
}
相關文章
相關標籤/搜索