soldier2222, в качестве благодарности на сайте предусмотрена кнопка «Отметить решением». Будьте любезны, отметьте ответ автора решением, если он оказался вам действительно полезным.
Сложнее — значит дольше. Вы уверены, что хотите потратить несколько месяцев на какое-то «сложное» приложение, которое в результате может никого не впечатлить? Лучше напишите сначала что-то простое. Сложное ещё успеете. А вот усложнённым приложением вы никого не впечатлите, а наоборот отпугнёте. Качество на первом месте и любой уважающий себя разработчик вам это подтвердит. Вы уверены, что сможете написать что-то сложное и качественное за короткий срок?
Михаил, лучше опишите задачу так, как объяснили бы её человеку не понимающему программирование. Типа «я хочу, чтоб при нажатии на кнопку она подкрашивалась зелёным цветом». Из ваших объяснений создаётся впечатление, что вы не с того конца начали решать задачу, поэтому и не понятно что советовать.
Владимир, учитывайте, что решение ниже не работает с кириллицей, только латиницей. Ну и плюс, оно не прошло у меня проверку с этой строкой: "My string __2__ asdasdsa"
Владимир, это не так очевидно для того, кто не понимает, что вам нужно, как вам может показаться. Вы знаете задачу и поэтому думаете, что и все её также понимают. Но это не так. Плюс, регексы, которые вы скинули ещё больше запутывают.
Владимир, проверьте на символах. Ну или вы неправильно описали задачу. Скиньте пару примеров, где должно быть true и пару примеров, где должно быть false.
Ваши регексы проверяют не наличие буквы или цифры в строке, они проверяют, что строка от начала и до конца состоит из букв и цифр. Поэтому результат постоянно false. В первой из-за знака вопроса, а во второй из-за запятой.
muhasa, в таком случае надо всё ручками выпиливать. Это не решается лучшими практиками. Надо зайти и подтереть. Можно в принципе подтереть у себя и пуш форс.
Иван, я имел ввиду нечто такое: https://codepen.io/Reenuay/pen/KKKJMpE
При этом каждый объект обязывается внутри себя хранить только данные, методы выносятся в эту большую функцию-свитч. У пена, который я скинул есть, конечно, одна проблема. Нет гарантии, что объекты, передаваемые в функцию будут следовать конвенциям. Как видно, каждый объект должен содержать поле name, но ввиду динамической природы JS нет никаких гарантий. Чтоб повысить отказоустойчивость кода и уменьшить возможность потенциальных ошибок, можно применить ООП подход. Вместо просто объектов использовать экземпляры классов. Создаёте базовый класс и каждый айтем от него наследуете. Так вы получите поддержку компилятора в коде и более консистентный код. Вот пример: https://codepen.io/Reenuay/pen/NWWorgo Минус — много бойлерплейт кода и даже просто, много кода. Гарантий всё равно никаких нет, потому что JS от этого не становится статическим, но в целом, если писать код одинаково, то вероятность ошибок сильно снижается. Выбирайте, что больше нравится. В обоих случаях данные и методы разделены, поэтому вы легко можете поместить их в экземпляр Vue в нужные разделы.
Иван, вообще, мне в голову ещё вариант пришёл. Написать 2 глобальные функции — do_action и is_available , которые по идентификатору объекта определяли бы его логику и обрабатывали бы его. То есть вынести всю логику методов в отдельные от объектов функции. Этот подход функциональный, так делают в функциональных языках и в принципе, в вашем случае он неплох. По-сути такая функция — это большой свитч. Функцию можно разбить на более мелкие, если нужно, каждая из которых реализовывала бы свою ветку свитча. К сожалению JS не поддерживает красивого синтаксиса аля паттерн матчинг, но всё-же выглядеть будет всё равно неплохо.