
Код AS3:
package {
import flash.display.Sprite;
/**
* @author Ilya Malanin (flashdeveloper[at]pastila.org)
*/
public class LinkedArraysSort extends Sprite {
public function LinkedArraysSort() {
var keys : Array = [1, 2, 8, 7, 3];
var values : Array = ['g', 'f', 'n', 't', 'k'];
testLinkedSort1(keys.concat(), values.concat());
testLinkedSort2(keys.concat(), values.concat());
}
private function testLinkedSort1(keys : Array, values : Array) : void {
var sortedIndexes : Array = keys.sort(Array.NUMERIC | Array.RETURNINDEXEDARRAY);
remapValues(keys, sortedIndexes);
remapValues(values, sortedIndexes);
trace("Test 1\n---------------");
trace("keys: " + keys);
trace("values: " + values+'\n');
}
private function remapValues(values : Array, newIndexes : Array) : void {
var result : Array = [];
const length : int = newIndexes.length;
for (var i : int = 0; i < length; i++) {
result[i] = values[newIndexes[i]];
}
values.length = 0;
values.splice(0, 0, result);
}
private function testLinkedSort2(keys : Array, values : Array) : void {
trace("Test 2\n---------------");
var merged : Array = [];
const length : int = keys.length;
for (var i : int = 0; i < length; i++) {
merged.push({key: keys[i], value: values[i]});
}
merged.sortOn('key', Array.NUMERIC);
for (i = 0; i < length; i++) {
keys[i] = merged[i]['key'];
values[i] = merged[i]['value'];
}
trace('keys: ' + keys);
trace('values: ' + values);
}
}
}