我的应用中有一个数组,其中包含多个相同的值。我需要一次从数组中删除一个值,无论它是否有相同的更多值。
Level1 Business,
Level2 Economy,
Level2 Economy,
Level1 Business
如何实现这一点,主要的是这些值是动态的,这些值或多或少也可以。请指导以上。 以下是我的尝试。
if([arr containsObject:[NSString stringWithFormat:@"%d",ind]]){
[arr removeObject:[NSString stringWithFormat:@"%d",ind]];
}
这件事删除了所有类似的条目,不是必需的。提前谢谢。
答案 0 :(得分:4)
尝试这样,
NSArray *array = [NSArray arrayWithObjects:@"Level1 Business", @"Level2 Economy", @"Level2 Economy", @"Level1 Business", nil];
NSMutableArray *mainarray=[[NSMutableArray alloc]initWithArray:array];
int n=[mainarray indexOfObject:@"Level2 Economy"];//it gives first occurence of the object in that array
if(n<[mainarray count]) // if the object not exist then it gives garbage value that's why here we have to take some condition
[mainarray removeObjectAtIndex:n];
NSLog(@"%@",mainarray);
O / P: -
(
"Level1 Business",
"Level2 Economy",
"Level1 Business"
)
答案 1 :(得分:1)
使用[arr removeObjectAtIndex:yourIndex ]
删除动态
答案 2 :(得分:1)
正如你所说,
[array removeObject:@"SomeObject"];
删除 isEqual:
返回YES
的所有实例。要仅删除第一个实例,可以使用类似
NSUInteger index = [array indexOfObject:@"SomeObject"];
if(index != NSNotFound) {
[array removeObjectAtIndex:index];
}
答案 3 :(得分:1)
示例代码:
NSMutableArray *arr = [[NSMutableArray alloc]initWithObjects:@"hello",@"hi",@"hi",@"hi",@"hi",@"hi",@"hi",@"hi",@"hi",@"hi",@"hi",@"hi",@"hi",nil];
NSUInteger obj = [arr indexOfObject:@"hi"]; //Returns the lowest integer of the specified object
[arr removeObjectAtIndex:obj]; //removes the object from the array
NSLog(@"%@",arr);
在你的案例中:
if([arr containsObject:[NSString stringWithFormat:@"%d",ind]])
{
NSUInteger obj = [arr indexOfObject:[NSString stringWithFormat:@"%d",ind]]; //Returns the lowest integer of the specified object
[arr removeObjectAtIndex:obj];
}
答案 4 :(得分:0)
NSMutableArray *uniques= [[NSMutableArray alloc] init];
for (NSString *word in duplicateWordsArray){
if (!uniques.contains(word)){
[ uniques addObject:word];
}
}
我是通过手机编写的,因此它没有针对代码进行格式化,但是这将很快为您完成,并且您将拥有一个具有独特单词的数组(uniquearray)。然后你可以使用那个或将原始array =设置为唯一数组
答案 5 :(得分:0)
这里你的要求就像NSSet的定义,它只包含唯一的对象。 但这只会暗示两个相同的值对象,实际上也是指同一个内存位置。
如果是这种情况,那么您可以尝试下面提到的代码:
// create set from an array
NSSet *telephoneSet = [NSSet setWithArray: myArray];
// create array from a set
NSMutableArray *array = [NSMutableArray arrayWithArray:[set allObjects]];
我不知道它是否适合您的要求。但为此,需要检查对象的相等级别。
仍然可以帮助您减少代码行。
答案 6 :(得分:0)
NSArray *input = [NSArray arrayWithObjects:@"Level1 Business", @"Level2 Economy", @"Level2 Economy", @"Level1 Business", nil];
NSMutableArray *output = [[NSMutableArray alloc] init];
[output addObject:[input objectAtIndex:0]];
for(NSString *value in input) {
if(![output containsObject:value])
[output addObject:value];
}