ios - 按照与另一个数组相同的顺序对一个数组进行排序

标签 ios xcode sorting

我有两个数组。比方说:

array = "Dave", "Mike", "Joe", "Jason", "Kevin"

IQ = 110, 145, 75, 122, 130

我想按智商对它们进行排序。从最高到最低说。我可以对一个数组进行排序……然后我返回查看它的位置,然后重新排列另一个数组。似乎必须有更好的方法来做到这一点。特别是如果阵列变大。

这是我现在的做法。

d1, d2, d3, d4, d5 是我的 IQ 变量。我使用 sortBack 数组以相同的顺序重新排列另一个数组。

NSMutableArray *myArray = [NSMutableArray arrayWithObjects:[NSString stringWithFormat:@"%d",d1], [NSString stringWithFormat:@"%d",d2],[NSString stringWithFormat:@"%d",d3], [NSString stringWithFormat:@"%d",d4],[NSString stringWithFormat:@"%d",d5], nil];

//sorting
[myArray sortUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2) {
    return [str1 compare:str2 options:(NSNumericSearch)];
}];

for(int i=0;i<5;i++)
{
    if([[myArray objectAtIndex:i] integerValue]==d1)
    {
        sortBackArray[i]=1;
    }
    else if([[myArray objectAtIndex:i] integerValue]==d2)
    {
        sortBackArray[i]=2;
    }
    else if([[myArray objectAtIndex:i] integerValue]==d3)
    {
        sortBackArray[i]=3;
    }
    else if([[myArray objectAtIndex:i] integerValue]==d4)
    {
        sortBackArray[i]=4;
    }
    else if([[myArray objectAtIndex:i] integerValue]==d5)
    {
        sortBackArray[i]=5;
    }
}

最佳答案

这将是为用户制作字典的更好方法。然后根据他们的特定值(如智商、姓名等)进行排序。

NSArray *users = @[@"Dave",@"Mike",@"Joe",@"Jason",@"Kevin"];
NSArray *iqs = @[@110,@145,@75,@122,@130];

NSMutableArray *array = [NSMutableArray array];
for (int idx = 0;idx<[users count];idx++) {
    NSDictionary *dict = @{@"Name": users[idx],@"IQ":iqs[idx]};
    [array addObject:dict];
}

NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"IQ" ascending:NO];
[array sortUsingDescriptors:@[descriptor]];

关于ios - 按照与另一个数组相同的顺序对一个数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16710043/

相关文章:

ios - Xcode 从不同的类获取文本字段的文本

objective-c - Obj-C,在线分配的对象的潜在泄漏,UIBarButtonItem alloc

sorting - XSLT 数字节点不排序

php - MySQL 查询 - 如何以某种方式对结果进行排序

ios - Xcode 6 - UIKeyboardDidShowNotification 无法识别的选择器

javascript - 有没有办法用JavaScript实现 "Open in Safari"?

ios - Linkedin v2.0 API - 如何获取个性化名称或公开资料网址?

ios - RCTBridge 委托(delegate)中的“NSInternalInconsistencyException”失败 - React Native

r - 如何根据任意顺序对 data.table 的行进行排序?

ios - 尝试添加简单约束但收到此错误消息