Что делает функция:
-
Принимает на вход:
-
Элемент — значение, которое нужно посчитать
-
ИсходныйМассив — массив, в котором производится поиск
-
Создаёт копию массива (вызовом МассивКопировать), чтобы не изменять исходный
-
Последовательно находит и удаляет элементы:
-
Ищет элемент в копии массива методом Найти()
-
Если элемент найден (индекс не равен Неопределено):
-
Повторяет цикл, пока находятся элементы
-
Возвращает количество найденных вхождений
Код:
Функция МассивКолВхождений(Элемент, ИсходныйМассив) Экспорт
КопияМассива = МассивКопировать(ИсходныйМассив);
Количество = 0;
ИндексЭлемента = -1;
Пока ИндексЭлемента <> Неопределено Цикл
ИндексЭлемента = КопияМассива.Найти(Элемент);
Если ИндексЭлемента <> Неопределено Тогда
Количество = Количество + 1;
КопияМассива.Удалить(ИндексЭлемента);
КонецЕсли;
КонецЦикла;
Возврат Количество;
КонецФункции
Алгоритм работы:
Исходный массив: ["яблоко", "груша", "яблоко", "банан", "яблоко"]
Поиск элемента: "яблоко"
Шаг 1: Найти "яблоко" → индекс 0, удалить → счётчик=1
Шаг 2: Найти "яблоко" → индекс 1 (в новом массиве), удалить → счётчик=2
Шаг 3: Найти "яблоко" → индекс 1, удалить → счётчик=3
Шаг 4: Найти "яблоко" → Неопределено, выход из цикла
Результат: 3
Пример использования:
МассивФруктов = Новый Массив;
МассивФруктов.Добавить("яблоко");
МассивФруктов.Добавить("груша");
МассивФруктов.Добавить("яблоко");
МассивФруктов.Добавить("банан");
МассивФруктов.Добавить("яблоко");
КоличествоЯблок = МассивКолВхождений("яблоко", МассивФруктов);
// Результат: 3
КоличествоАпельсинов = МассивКолВхождений("апельсин", МассивФруктов);
// Результат: 0