Код AS3:
var t:int = getTimer();
var i:int;
for (i=0; i< 100000; i++) {
TestEtc();
}
trace("TestEtc: ", getTimer()-t);
t = getTimer();
for (i=0; i< 100000; i++) {
TestKseniya();
}
trace("TestKseniya: ", getTimer()-t);
t = getTimer();
for (i=0; i< 100000; i++) {
TestIO();
}
trace("TestIO: ", getTimer()-t);
function TestEtc() {
var arr:Array = new Array();
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:false});
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:true});
var dict:Object = new Object();
for (var i:uint = 0; i<arr.length; i++) {
var hash:String = getHash(arr[i]);
if (hash in dict) {
arr.splice(i--, 1);
}
dict[hash] = true;
}
dict = null;
}
function TestKseniya() {
var arr:Array = new Array();
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:false});
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:true});
arr = sortO(arr,0,0,arr.length);
}
function TestIO() {
var arr:Array = new Array();
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:false});
arr.push({name:"one", manager:true});
arr.push({name:"tru", manager:true});
arr.push({name:"fri", manager:true});
removeDuplicatesIn(arr);
}
function removeDuplicatesIn( array:Array ):void
{
if( !array || array.length < 1 )
return;
var i:int = array.length;
while( i-- > 0 )
{
var m:Object = array[i];
var j:int = i;
while( j-- > 0 )
{
var n:Object = array[j];
if( n.name == m.name && n.manager == m.manager )
{
array.splice( i, 1 );
break;
}
}
}
}
function getHash(obj:Object):String {
return obj.name + (obj.manager ? '1' : '0');
}
function traceEmployee(element:*, index:int, arr:Array):void {
trace("\t" + element.name + ((element.manager) ? " (manager)" : ""));
}
function sortO(arrr:Array, i1:uint, i2:uint, len:uint):Array {
if (i1 < len) {
if (i2 < len) {
var len2:uint = len;
if (i1 != i2 && arrr[i1]["name"] == arrr[i2]["name"] && arrr[i1]["manager"] == arrr[i2]["manager"]) {
len2--;
arrr.splice(i2, 1);
}
sortO(arrr, i1, i2+1, len2);
} else {
sortO(arrr, i1+1, 0, len);
}
}
return arrr;
}
способ лучше. Он проявит себя с большими массивами.