2012-08-01 223 views
0

我有兩個數組:比較兩個數組

array1=[1,2,3,4,5,6,7,8,9,10,11] 
array2=[1,2] 

我想在「數組2」來比較天氣因素存在於「陣列1」與否。 如果是,那麼我需要運行一個函數,否則退出。 如何做到這一點?

回答

1

約列舉了數組1是什麼?

沿着我得到了共同的項目像這樣的

NSArray *array1 = ...; 
NSArray *array2 = ...; 

[array1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    if ([array2 containsObject: obj]) { 
     // Run the function you wanted to 
    } 
}]; 
+0

希望我可以提供更多+1的內存管理:) – ilhnctn 2012-08-01 07:29:39

+1

謝謝,這是枚舉的好處,如果意圖是隻運行一些包含的項目上的代碼不需要創建新的對象。如果想法是過濾,那麼我會使用NSMutableSet方法。 – 2012-08-01 07:44:50

+0

當我看到我決定使用NSMutableSet來回答的問題時,但在閱讀您的文章後,我會發現這是最好的 – ilhnctn 2012-08-01 07:50:47

1

一個簡單的邏輯的方法來做到這將是一個for循環:

for(int a = 0; a < array1.count; a++) { 
    for(int b = 0; b < array2.count; b++) { 
     if([[array1 objectAtIndex:a] isEqualToString:[array2 objectAtIndex:b]]) { 
      //do something here 
     } 
    } 
} 
7

東西線: -

NSMutableSet *idSet=[NSMutableSet setWithArray:Array1]; 
[idSet intersectSet:[NSSet setWithArray:Array2]]; 
NSArray *Common_array=[idSet allObjects]; 

共同數組你可以得到存在兩個數組中是同一個對象0對象在 Common_array比在兩個數組中都沒有相同的對象。

+0

簡單且緊湊的代碼。 – kushalrshah 2012-08-01 07:50:39

+0

它的甜美和簡單 – Wolverine 2012-08-01 11:24:02