потестируйте такой вариант:
var db = [ 1, 1, 2, 10, 2, 0, 0, 9, 2, 3, 7, 3, 4, 4, 4, 5 ];
function uniqueData(a) {
var result = [],
execCache = {},
length = a.length;
for( var v, x = 0; v = a[ x ], x < length; x++ ) {
if ( !( v in execCache ) ) {
result[ result.length ] = execCache[ v ] = v;
}
}
return result;
}
alert( uniqueData(db) );
тут используется объект, но зато проход всего один.