我在Objective-C,Xcode 8.3,OSX而不是iOS。
我有像这样的NSMutableArrays
NSMutableArray* A = [NSMutableArray arrayWithObjects:@"one string", @"another string", @"third string", nil];
NSMutableArray* B = [NSMutableArray arrayWithObjects:@"one string", @"second string", nil];
NSMutableArray* C = [NSMutableArray arrayWithObjects:@"one string", @"second string", @"third string", nil];
所有数组都嵌套在另一个数组
中NSMutableArray allArrays = [NSMutableArray arrayWithObjects: A,B,C,nil];
我想过滤allArrays,这样如果LAST元素(无论有多少项)等于“第三个字符串”,那么除了FIRST之外,THAT数组的所有元素都会被删除
以上示例的结果应为:
@[
@[@"one string"], // A
@[@"one string", @"second string"], // B
@[@"one string"] // C
]
我已经有了迭代和比较的工作解决方案,但必须有更有效的方法!
任何帮助表示感谢。
答案 0 :(得分:0)
NSMutableArray* A = [NSMutableArray arrayWithObjects:@"one string", @"another string", @"third string", nil];
NSMutableArray* B = [NSMutableArray arrayWithObjects:@"one string", @"second string", nil];
NSMutableArray* C = [NSMutableArray arrayWithObjects:@"one string", @"second string", @"third string", nil];
NSMutableArray *allArrays = [NSMutableArray arrayWithObjects: A,B,C,nil];
for (NSMutableArray *innerArray in allArrays)
{
//check that inner is not empty
if (innerArray.count > 0)
{
//Compare the last object
if ([[innerArray lastObject] isEqualToString:@"third string"])
{
//copy first string
NSString *firstString = [innerArray firstObject];
//remove all items from array
[innerArray removeAllObjects];
//Now insert copied string into empty array
[innerArray addObject:firstString];
}
}
}
NSLog(@"%@",allArrays);
答案 1 :(得分:0)
较短版本的Maheshs回答:
1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
Sum = 6
2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
Sum = 12