Проблемы с функционалом "Списков"

Поддержка
  • Всем привет, проблема скорее в моем не знании целиком инструментария "BAS" и то как это реализовать. Но так как я потратил поиск решения уже достаточно времени и так как есть форум решил попробовать через него решить данную проблему.

    Есть список с значениями:
    lorem lorem true lorem lorem
    lorem. lorem false - lorem lorem
    lorem = lorem, lorem, lorem
    loremtruelorem lorem lorem

    нужно из списка удалить все строки в которых есть слово (или которые встречают слово "true")
    на сколько понимаю у BAS есть такая функция в списке "Удалить По Значению" - и там вводиться само значение, как я понял по точному соответствию, но проблема в том что слово "true" встречаются в не точном соответствие и может быть окружено другие словами. Тут как я понимаю нужно использовать метод "expression" и через JAVAScript как то это решать (мне так кажется) , но яву я к сожалению пока не на столько хорошо изучил.
    Может есть другой способ или каким должен быть код что бы в списке удалять строку содержащую текст именно через "Удалить По Значению"?
    Спасибо за понимание!

  • @snifram said in Проблемы с функционалом "Списков":

    Всем привет, проблема скорее в моем не знании целиком инструментария "BAS" и то как это реализовать. Но так как я потратил поиск решения уже достаточно времени и так как есть форум решил попробовать через него решить данную проблему.

    Есть список с значениями:
    lorem lorem true lorem lorem
    lorem. lorem false - lorem lorem
    lorem = lorem, lorem, lorem
    loremtruelorem lorem lorem

    нужно из списка удалить все строки в которых есть слово (или которые встречают слово "true")
    на сколько понимаю у BAS есть такая функция в списке "Удалить По Значению" - и там вводиться само значение, как я понял по точному соответствию, но проблема в том что слово "true" встречаются в не точном соответствие и может быть окружено другие словами. Тут как я понимаю нужно использовать метод "expression" и через JAVAScript как то это решать (мне так кажется) , но яву я к сожалению пока не на столько хорошо изучил.
    Может есть другой способ или каким должен быть код что бы в списке удалять строку содержащую текст именно через "Удалить По Значению"?
    Спасибо за понимание!

    Используйте действие "Foreach" для перебора списка и действие "Содержит" в модуле "Строка", что бы определить содержится ли нужная строка в элементе списка или нет

  • @Fox said in Проблемы с функционалом "Списков":

    @snifram said in Проблемы с функционалом "Списков":

    Всем привет, проблема скорее в моем не знании целиком инструментария "BAS" и то как это реализовать. Но так как я потратил поиск решения уже достаточно времени и так как есть форум решил попробовать через него решить данную проблему.

    Есть список с значениями:
    lorem lorem true lorem lorem
    lorem. lorem false - lorem lorem
    lorem = lorem, lorem, lorem
    loremtruelorem lorem lorem

    нужно из списка удалить все строки в которых есть слово (или которые встречают слово "true")
    на сколько понимаю у BAS есть такая функция в списке "Удалить По Значению" - и там вводиться само значение, как я понял по точному соответствию, но проблема в том что слово "true" встречаются в не точном соответствие и может быть окружено другие словами. Тут как я понимаю нужно использовать метод "expression" и через JAVAScript как то это решать (мне так кажется) , но яву я к сожалению пока не на столько хорошо изучил.
    Может есть другой способ или каким должен быть код что бы в списке удалять строку содержащую текст именно через "Удалить По Значению"?
    Спасибо за понимание!

    Используйте действие "Foreach" для перебора списка и действие "Содержит" в модуле "Строка", что бы определить содержится ли нужная строка в элементе списка или нет

    и если содержит "true" то удаляем - спасибо

    на сколько понял еще один из способов это через выполнение кода "[[URL_LIST_FINAL]] = [[URL_LIST_FINAL]].filter(function(a){return a.toLowerCase().indexOf("https://m.me") < 0 && a.toLowerCase().indexOf("skype.com") < 0 && a.toLowerCase().indexOf("twitter.com") < 0})" и тд , но как понимаю если скрипт многопоточный и список большой может положить сам BAS уже

  • @snifram said in Проблемы с функционалом "Списков":

    и если содержит "true" то удаляем - спасибо

    на сколько понял еще один из способов это через выполнение кода "[[URL_LIST_FINAL]] = [[URL_LIST_FINAL]].filter(function(a){return a.toLowerCase().indexOf("https://m.me") < 0 && a.toLowerCase().indexOf("skype.com") < 0 && a.toLowerCase().indexOf("twitter.com") < 0})" и тд , но как понимаю если скрипт многопоточный и список большой может положить сам BAS уже

    Не положит, это буквально тоже самое, только через js

  • @Fox said in Проблемы с функционалом "Списков":

    @snifram said in Проблемы с функционалом "Списков":

    и если содержит "true" то удаляем - спасибо

    на сколько понял еще один из способов это через выполнение кода "[[URL_LIST_FINAL]] = [[URL_LIST_FINAL]].filter(function(a){return a.toLowerCase().indexOf("https://m.me") < 0 && a.toLowerCase().indexOf("skype.com") < 0 && a.toLowerCase().indexOf("twitter.com") < 0})" и тд , но как понимаю если скрипт многопоточный и список большой может положить сам BAS уже

    Не положит, это буквально тоже самое, только через js

    принял, спасибо!

  • данная функция очень понравилась))) спасибо , не стал создавать новую тему решил в этой спросить

    а как по аналогии сделать в обратную сторону "[[URL_LIST_FINAL]] = [[URL_LIST_FINAL]].filter(function(a){return a.toLowerCase().indexOf("https://m.me") < 0 && a.toLowerCase().indexOf("skype.com") < 0 && a.toLowerCase().indexOf("twitter.com") < 0})" - так удалит все строки в которых есть или встречаются заданные элементы

    а как оставить эти строки а удалить остальные которые не встречают перечисленные элементы
    Спасибо заранее

  • Прошу прощения - до самого дошло что вопрос в операторах

    Для реализации функционала, который оставляет только строки, содержащие хотя бы одно из указанных значений в indexOf("..."), нужно инвертировать логическое условие. Вместо проверки на отсутствие всех указанных подстрок, мы будем проверять наличие хотя бы одной из них.

    Вот соответствующий код:
    [[FINAL_LIST]] = [[FINAL_LIST]].filter(function(a) {
    return a.toLowerCase().indexOf("background:") >= 0 ||
    a.toLowerCase().indexOf("#") >= 0 ||
    a.toLowerCase().indexOf("width:") >= 0 ||
    a.toLowerCase().indexOf("margin-right:") >= 0 ||
    a.toLowerCase().indexOf(";") >= 0 ||
    a.toLowerCase().indexOf("=>") >= 0 ||
    a.toLowerCase().indexOf(">") >= 0 ||
    a.toLowerCase().indexOf(")") >= 0 ||
    a.toLowerCase().indexOf("e.json") >= 0 ||
    a.toLowerCase().indexOf("(") >= 0 ||
    a.toLowerCase().indexOf("height:") >= 0 ||
    a.toLowerCase().indexOf("color:") >= 0 ||
    a.toLowerCase().indexOf("content:") >= 0 ||
    a.toLowerCase().indexOf("gtag.js") >= 0 ||
    a.toLowerCase().indexOf("cloudflare") >= 0 ||
    a.toLowerCase().indexOf("cdn-cgi") >= 0;
    });
    Объяснение изменений:
    Инверсия условия : В оригинальной функции использовались операторы < 0 для исключения строк, содержащих определенные подстроки. Здесь мы заменили их на >= 0, чтобы включить строки, содержащие эти подстроки.
    Логическое "или" (||) : Для того чтобы строка проходила фильтрацию, достаточно, чтобы она содержала хотя бы одну из указанных подстрок. Поэтому используем оператор || между условиями.
    Синтаксис сохранен : Структура и стиль кода полностью соответствуют вашему примеру.
    Теперь этот код оставит только те строки, которые содержат хотя бы одну из указанных подстрок. Все остальные строки будут удалены.