Как проверить есть ли N кол-во одинакового текста

Поддержка
  • Пытаюсь найти 3 одинаковых текста из списка через foreach, но условие получается true даже если текст не полностью одинаковый.
    Подскажите что не так

    ([[FOREACH_DATA]]) == ([[SSS1]] && [[SSS2]] && [[SSS3]]) || ([[FOREACH_DATA]]) == ([[SSS1]] && [[SSS2]] && [[SSS4]]) || ([[FOREACH_DATA]]) == ([[SSS2]] && [[SSS3]] && [[SSS4]]) || ([[FOREACH_DATA]]) == ([[SSS1]] && [[SSS3]] && [[SSS4]])
    

    89c1d1d7-78d4-4de4-939e-42420aac711f-image.png d7b0de6e-669d-4cde-9884-4cb973c476a6-image.png
    1111_test.xml

    1. Вы пытаетесь получить 4 элемента из списка в котором только 3 элемента.
    2. Сам алгоритм поиска у вас неверный.
      В лоб это можно решить так: заведите 3 дополнительных булевых переменных (тип: expression) со значением false. Добавьте в цикл 3 проверки - если FOREACH_DATA == SSS1 , то для первой доп. переменной устанавливайте значение true, и ещё две аналогичных проверки для других переменных. И ещё одна проверка после этих - если все 3 доп. переменные имеют значение true, то поиск завершен, т.е. это значит, что все 3 элемента из списка STICKERS также содержатся и в списке LIST.
  • @SimpleBot

    1. 4 элемента это максимум что может быть в списке что я получаю (там может быть и 2 и 0)
    2. в списке LIST много разных элементов и если пустить foreach по SSS1, SSS2, SSS3 как вы предлагаете то он выдаст так же 3 разных элемента если они будут присутствовать в списке STICKERS

    upd: вы мне подкинули идею и она вроде даже сработала
    заменил это

    ([[FOREACH_DATA]]) == ([[SSS1]] && [[SSS2]] && [[SSS3]]) || ([[FOREACH_DATA]]) == ([[SSS1]] && [[SSS2]] && [[SSS4]]) || ([[FOREACH_DATA]]) == ([[SSS2]] && [[SSS3]] && [[SSS4]]) || ([[FOREACH_DATA]]) == ([[SSS1]] && [[SSS3]] && [[SSS4]])
    

    на это и вроде работает

    ([[FOREACH_DATA]]) == ([[SSS1]]) && ([[FOREACH_DATA]]) == ([[SSS2]]) && ([[FOREACH_DATA]]) == ([[SSS3]]) || ([[FOREACH_DATA]]) == ([[SSS1]]) && ([[FOREACH_DATA]]) == ([[SSS2]]) && ([[FOREACH_DATA]]) == ([[SSS4]]) || ([[FOREACH_DATA]]) == ([[SSS2]]) && ([[FOREACH_DATA]]) == ([[SSS3]]) && ([[FOREACH_DATA]]) == ([[SSS4]]) || ([[FOREACH_DATA]]) == ([[SSS1]]) && ([[FOREACH_DATA]]) == ([[SSS3]]) && ([[FOREACH_DATA]]) == ([[SSS4]])
    

    благодарю.

  • Должно работать, если я правильно понял что вам нужно:
    Screenshot_1.png
    1234567_test.xml

  • @SimpleBot мне нужно было что бы условие было верно только если в переменой STICKERS есть 3+ одинаковых элемента из списка LIST, немного не правильно сформулировал свою мысль в описании темы, мой косяк
    но я уже разобрался, спасибо