_CPJavaScriptArray -objectsAtIndexes: implementation.

Added speed test in CPArrayPerformanceTest (6x faster).
This commit is contained in:
cacaodev
2013-02-04 17:26:18 +01:00
parent a339368023
commit 04026c054b
2 changed files with 69 additions and 0 deletions
+23
View File
@@ -120,6 +120,29 @@ var concat = Array.prototype.concat,
return self[anIndex];
}
- (CPArray)objectsAtIndexes:(CPIndexSet)indexes
{
if ([indexes lastIndex] >= self.length)
[CPException raise:CPRangeException reason:_cmd + " indexes out of bounds"];
var ranges = indexes._ranges,
count = ranges.length,
result = [],
i = 0;
for (; i < count; i++)
{
var range = ranges[i],
loc = range.location,
len = range.length,
subArray = self.slice(loc, loc + len);
result.splice.apply(result, [result.length, 0].concat(subArray));
}
return result;
}
- (CPUInteger)indexOfObject:(id)anObject inRange:(CPRange)aRange
{
// Only use isEqual: if our object is a CPObject.