从阵列中挑出特定数量?

时间:2012-06-24 12:52:36

标签: iphone objective-c ipad nsarray

我有一堆充满数字的NSArrays。无论如何,我可以以某种方式获取特定数字,特别是:

数组中第三高的数字,或数组中第24个最高数字?

但是我不想只是抓住数字,我也需要引用它在数组中的索引,如果可以在过程中保留它。

感谢。

2 个答案:

答案 0 :(得分:4)

  

数组中第三高的数字,或数组中第24个最高数字?

创建数组的临时副本并按升序排序 获取索引3-124-1的数字。

  

我还需要引用它在数组中的索引

现在使用indexOfObject:indexOfObjectIdenticalTo:来获取实际索引。

答案 1 :(得分:0)

从我在这里的答案Getting Top 10 Highest Numbers From Array?开始排序的numbers数组:

NSUInteger wanted = 24 or anything;

NSUInteger count = 0;
NSNumber* previous = nil;
for (NSDictionary* entry in numbers)
{
    if ( wanted == 1 ) return entry;

    if (previous == nil)
    {
        // first entry
        previous = entry[@"number"];
        ++ count;

        continue;
    }

    // same number? skip it.
    if ( entry[@"number"] isEqualTo: previous ) continue;

    // if we get here, we found a different number we may be interested in

    ++ count;

    if ( count == wanted ) return entry;
}

// nothing found
return nil;

结果是上一个问题的numbers数组中的一行。形式为@[ @"number" : @<number>, @"parent" : <source array> ]

的数组