我有一個NSArray
這樣的字符串對象中的名稱:@[@"john", @"smith", @"alex", @"louis"]
,並且我有另一個包含大量名稱的數組。我如何檢查第一個數組中的所有對象都在第二個中?檢查一個NSArray的內容是否都在另一個數組
回答
運行循環並使用isEqualToStiring
來驗證mainArray中是否存在array1對象。
像你說的「約翰」可以使用的[NSArray containsObject:]
,你的目的將是你的陣列1的概念,「史密斯」,「亞歷克斯」,「路易」
int num_of_matches = 0;
for(NSString *name in mainArray)
{
if(array1 containsObject:name){
num_of_matches++;
}
}
if(num_of_matches == [array1 count]{
// All objects present
}else {
// Matched number is equal of number_of_matches
}
如果你只需要檢查array1中的所有對象是否在mainArray中,您應該只使用NSSet
eg
BOOL isSubset = [[NSSet setWithArray:array1] isSubsetOfSet:[NSSet setWithArray:mainArray]]
,如果你需要檢查哪些對象是在mainArray,你應該在NSMutableSet
NSMutableSet *array1Set = [NSMutableSet setWithArray:array1];
[array1Set intersectSet:[NSSet setWithArray:mainArray]];
//Now array1Set contains only objects which are present in mainArray too
NSSet
看看它你需要什麼。如果我們忽略了一會兒性能問題,那麼下面的片段將你在一行中需要什麼:
BOOL isSubset = [[NSSet setWithArray: array1] isSubsetOfSet: [NSSet setWithArray: mainArray]];
我認爲這是迄今爲止最好的解決方案。我完全忘記了NSSet。 – 2013-03-07 11:31:34
@PraveenS:我同意你:) – 2013-03-07 11:36:39
確實是最好的解決方案:) +1 – User31 2015-05-21 13:22:43
使用的NSArray filteredArrayUsingPredicate:方法。它的真快,找出相似類型的對象在兩個數組
NSPredicate *intersectPredicate = [NSPredicate predicateWithFormat:@"SELF IN %@", otherArray];
NSArray *intersectArray = [firstArray filteredArrayUsingPredicate:intersectPredicate];
從上面的代碼中交叉陣列賦予您在其他數組相同的對象。
試試這個方法;
NSArray *[email protected][@"A",@"B",@"C",@"D"];
NSArray *[email protected][@"C",@"x"];
BOOL result=YES;
for(id object in myArray){
if (![mainArray containsObject:object]) {
result=NO;
break;
}
}
NSLog(@"%d",result); //1 means contains, 0 means not contains
NSArray *array1 = [NSArray arrayWithObjects:@"a", @"u", @"b", @"v", @"c", @"f", nil];
NSMutableArray *mainArray = [NSMutableArray arrayWithObjects:@"a", @"u", @"I", @"G", @"O", @"W",@"Z",@"C",@"T", nil];
int j=0;
for(int i=0; i < mainArray.count; i++)
{
if (j < array1.count)
{
for(j=0; j <= i; j++)
{
if([[mainArray objectAtIndex:i] isEqualToString:[array1 objectAtIndex:j]])
{
NSLog(@"%@",[mainArray objectAtIndex:i]);
}
}
}
}
使用此代碼..
NSArray *temp1 = [NSArray arrayWithObjects:@"john",@"smith",@"alex",@"loui,@"Jac", nil];
NSArray *temp2 = [NSArray arrayWithObjects:@"john",@"smith",@"alex",@"loui,@"Rob", nil];
NSMutableSet *telephoneSet = [[NSMutableSet alloc] initWithArray:temp1] ;
NSMutableSet *telephoneSet2 = [[NSMutableSet alloc] initWithArray:temp2];
[telephoneSet intersectSet:telephoneSet2];
NSArray *outPut = [telephoneSet allObjects];
NSLog(@"%@",outPut);
輸出數組包含..
「約翰」, 「史密斯」, 「亞歷克斯」,「路易
如根據你的要求。
OP想檢查其他數組中存在的內容。不創建一個新的數組。這是如何回答的? – 2014-12-04 21:54:08
- 1. 檢查一個數組是否是另一個數組的一個整數
- 2. 檢查是否在一個NSArray所有的對象都相同
- 3. 檢查一個數組的內容是否全是整數
- 4. 檢查一個數組的值是否在另一個
- 5. Javascript檢查數組是否包含另一個數組的所有內容
- 6. 檢查數組的鍵是否存在另一個數組值
- 7. 檢查數組是另一個數組
- 8. 檢查數組中的對象是否是另一個數組
- 9. 如何檢查一個數組的值是否是另一個數組的鍵?
- 10. 如何檢查一個數組的元素是否在另一個數組中?
- 11. 如何檢查一個數組是否是另一個數組的子序列?
- 12. 檢查一個DIV的內容是否只是一個圖像
- 13. angularjs檢查數組值是否在另一個數組中
- 14. Swift檢查數組是否包含在另一個數組中
- 15. 檢查一個數組中的所有元素是否都包含在另一個數組中
- 16. 檢查是否至少有一個數組值在另一個數組中PHP
- 17. Vb.net檢查一個數是否是另一個數的多重
- 18. 檢查是否在一個列表中的所有元素都在另一個
- 19. Javascript:檢查一個數字是否在另一個數字的n之內
- 20. 如何檢查一個數組是否包含PHP中的另一個數組?
- 21. 檢查一個數組是否與java中另一個數組的反轉
- 22. 檢查數組在另一個數組
- 23. 檢查是否所有項目都可以在另一個數組中找到
- 24. 檢查一個數組中的每個元素是否包含在另一個數組的一組值中
- 25. javascript檢查是否存在另一個數組中的1個數組
- 26. 用另一個數組檢查一個數組的數組
- 27. 檢查值是否在另一個表
- 28. 檢查如果一個數組是另一個數組的一個子集(但檢查對一個屬性)
- 29. 檢查一個數組是否排序
- 30. 檢查一個數是否爲另一個(其反向)的鏡
檢查此鏈接http://stackoverflow.com/questions/9178585/c omparing-2-arrays-and-objects-in-an-an-array-logic-issue – JPiOS 2013-03-07 11:02:58