Показать сообщение отдельно
  #11 (permalink)  
Старый 23.01.2011, 01:41
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

все давно продумано: правильная версия 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);
Ответить с цитированием