все давно продумано:
правильная версия 2 на дклабе
Array.prototype.union = function(list, callback)
{
if ( 'function' != typeof callback ) {
callback = function(value1, value2)
{
return value1 != value2;
}
}
var result = this;
var L = result.length;
var j;
var u;
SEARCH_UNIQUE:
for (var i = 0; i < list.length; i++) {
j = 0;
u = true;
while ( j < L ) {
u = callback(result[j], list[i]);
if ( ! u ) {
continue SEARCH_UNIQUE;
}
j++;
}
result[L] = list[i];
L++;
}
return result;
}
var arr1 = [1, 2, 3, 4];
var arr2 = [1, 4, 5, 6];
arr1.union(arr2);
alert(arr1);
var arr4 = [].union([1, 1, 3, 1, 4, 3, 5]);
alert(arr4);