只包含一种元素类型的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;
}
}