Сравнение двух массивов

FastCode 1534 13 21 67

Задача заключается в том, чтобы сравнить два массива и вывести те их элементы, которые не встречаются в обоих массивах, то есть выполнить операцию исключающего ИЛИ для массивов. С использованием соответствия функция сравнения получается достаточно простой:

Автор: ildarovich

Функция ИсключающееИЛИ(Массив1, Массив2)    
    Результат = Новый Массив;    
    Повтор = Новый Соответствие;    
    Для каждого Элемент Из Массив1 Цикл
        Повтор[Элемент] = ?(Повтор[Элемент] = Неопределено, Ложь, Истина)
    КонецЦикла;    
    Для каждого Элемент Из Массив2 Цикл
        Повтор[Элемент] = ?(Повтор[Элемент] = Неопределено, Ложь, Истина)
    КонецЦикла;    
    Для каждого Элемент Из Повтор Цикл
        Если НЕ Элемент.Значение Тогда
            Результат.Добавить(Элемент.Ключ)
        КонецЕсли 
    КонецЦикла;    
    Возврат Результат
КонецФункции

//Если в массиве могут быть только даты (в исходной задаче было так), то можно использовать другой принцип, сократив один цикл:

Функция ИсключающееИЛИ1(Массив1, Массив2)    
    Результат = Новый Массив;    
    Строка1 = ЗначениеВСтрокуВнутр(Массив1);
    Строка2 = ЗначениеВСтрокуВнутр(Массив2);    
    Для каждого Элемент Из Массив1 Цикл
        Если НЕ Найти(Строка2, Формат(Элемент,"ДФ=ггггММддЧЧммсс")) Тогда
            Результат.Добавить(Элемент)
        КонецЕсли 
    КонецЦикла;    
    Для каждого Элемент Из Массив2 Цикл
        Если НЕ Найти(Строка1, Формат(Элемент,"ДФ=ггггММддЧЧммсс")) Тогда
            Результат.Добавить(Элемент)
        КонецЕсли 
    КонецЦикла;    
    Возврат Результат
КонецФункции
0
Орфографическая ошибка в ггггММддЧЧммсс (найдено 2): гггг

См. также

Сравнение двух строк

РазностьМассивов (БСП)

ДанныеРазличаются (БСП)

Общие элементы массивов

Функция сравнения значений (рекурсивно)

ИР Запомнить для сравнения

Сравнение плановых и фактических дней отпуска

ЭтоВидСравненияСписка (БСП)

СравнениеВерсийАвтомат (БСП)

Модератору