gpt4 book ai didi

iphone - 获取数组中对象的索引以在其他数组中查找对应的对象

转载 作者:IT王子 更新时间:2023-10-29 08:08:11 24 4
gpt4 key购买 nike

我有两个数组。一个是名称数组,另一个是由标题为“Yes”或“No”的字符串组成的数组。 “名称”数组中每个名称的索引路径与“是/否”数组中的相同索引路径相对应。例如:

Names Array | Yes/No Array
Person 1 | Yes
Person 2 | No
Person 3 | Yes

查找一个人的名字(可能获取它的索引路径)并检查他们在“是/否”数组中是"is"还是“否”的最简单方法是什么?

此外,我不确定“索引路径”是否是正确的术语。如果不是,我指的是对象在数组中的编号。

最佳答案

NSArray 有一个名为 indexOfObject 的方法,如果没有找到这样的对象,它将返回对应数组值等于 anObject 的最低索引或 NSNotFound。如果您的名称数组未排序,则使用它来获取索引,然后您可以将其插入是/否数组。也就是说,沿着这些方向:

NSString *answer = nil;
NSUInteger index = [namesArray indexOfObject:@"John Smith"];
if (index != NSNotFound) {
answer = [yesNoArray objectAtIndex:index];
}
return answer;

因为 Bavarious 会在我假设的地方提问,所以当名称数组按字母顺序排序时,这是一种更好的方法。

int index = [self findName:@"John Smith"];
NSString *answer = nil;
if (index >= 0) {
answer = [yesNoArray objectAtIndex:index];
}
return answer;

其中函数 findName 是一个简单的二进制搜索:

-(int)findName:(NSString *)name {
int min, mid, max;
NSComparisonResult comparisonResult;
min = 0;
max = [namesArray count]-1;
while (min <= max) {
mid = min + (max-min)/2;
comparisonResult = [name compare:[namesArray objectAtIndex:mid]];
if (comparisonResult == NSOrderedSame) {
return mid;
} else if (comparisonResult == NSOrderedDescending) {
min = mid+1;
} else {
max = mid-1;
}
}
return -1;
}

关于iphone - 获取数组中对象的索引以在其他数组中查找对应的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6393593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com