我有两个阵列。
首先,我将两个arrays
的计数进行比较,而不是将它们放在NSSet
中,以检查它们是否包含关键字。如果bool
返回true,则我将其添加到finalArray
。
NSInteger int1 = inputArray.count;
NSInteger int2 = databaseArray.count;
if (int1 == int2) {
NSArray *array = [inputArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"ANY %@ contains[cd] self", databaseArray]];
NSSet *set1 = [NSSet inputArray];
NSSet *set2 = [NSSet setWithArray:array];
if([set1 isEqualtoSet:set2]) {
考虑以下情况:
inputArray = @"John", @"Kyle"
dataBaseArray[0] = @"third john Stewart", @"second kyle braflowski"
在此示例中,我的代码会将项目添加到finalArray
,因为inputArray.count == dataBasesArray.count
(即2 == 2)和第2组包含" john"和"凯尔。"
但事实证明我的算法对我来说是错误的。
考虑以下示例(用伪代码编写):
inputArray = @"John" , @"Kyle", @"George", @"Mary"
dataBaseArray[0] = @"third john Stewart", @"second kyle braflowski"
databaseArray[3] = @"First Mary Steps", @"fourth kyle lomorik",@"second George steps"
我需要我的算法将这两个项目从databaseArray
添加到finalArray
,因为我inputArray
中的所有键都来自databaseArray[0]
(约翰,凯尔) )和databaseArray[3]
(乔治,凯尔,玛丽)。
在inputArray.count>的情况下,如何获得正确的解决方案? databaseArray.count?
一个新例子
input array = (@"rice", @"chicken",@"tomato",@"egg")
并且假设我从我的数据库中得到了2个项目
(@"100 gr rice",@"250 gr chicken")
和其他(@"250 gr chicken",@"4 eggs",@"3 tomato@")
使用此电流输入。我需要能够将我的数据库中的两个项目添加到finalArray中,以便在tableView上显示它。
答案 0 :(得分:0)
您的问题不明确,但我假设databaseArray
中的每个元素都是NSStrings数组。
以下方法将databaseArray
中每个元素中的每一行拉成单独的单词,并验证耗材列表中每行至少有一个单词。
- (NSArray *) intersectCandidates:(NSArray *)candidates withSupplies:(NSArray *)supplies
{
NSMutableArray *output=[[NSMutableArray alloc]init];
NSSet *suppliesSet=[NSSet setWithArray:supplies];
for (NSArray *candidateLines in candidates) {
int count=0;
for (NSString *candidateLine in candidateLines) {
NSArray *wordArray=[candidateLine componentsSeparatedByString:@" "];
for (NSString *word in wordArray) {
if ([suppliesSet contains:word]) {
++count;
break;
}
}
}
if (count == [candidateLines count]) { // We matched one word from each line
[output addObject:candidateLines];
}
}
return [NSArray arrayWithArray:output]; // Return a non-mutable copy
}
由于上述XY问题,我不确定这是解决实际问题的最有效方法。
答案 1 :(得分:0)
我几次读了你的问题,老实说,我不知道你在问什么。根据标题,您想要比较另一组项目中是否存在一组项目"您可以使用NSMutableSet执行此操作:
NSMutableSet * set1 = ...;
NSMutableSet * set2 = ...;
[set1 intersectsWithSet:set2];
// set 1 now contains all the objects that the two sets have in common
NSLog(@"ObjectsInCommon: %@", set1);