Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.10.2023, 19:40
Аспирант
Отправить личное сообщение для firep91613 Посмотреть профиль Найти все сообщения от firep91613
 
Регистрация: 24.10.2023
Сообщений: 55

Валидация скобок
Подскажите, как улучшить/упростить?
function isValid(str) {
  const pairs = {
    '(': ')',
    '{': '}',
    '[': ']'
  }

  const stack = [];

  for (let s of str) {
    if (s == '(' || s == '{' || s == '[') {
      stack.push(pairs[s]);
    }

    if (s == ')' || s == '}' || s == ']') {
      if (s != stack[stack.length - 1]) {
        return false;
      } else {
        stack.pop(stack[stack.length - 1]);
      }
    }
  }

  return true;
}

console.log(isValid('(hello{world} and [me])'));  // true
console.log(isValid('(hello{world)} and [me])')); // false
console.log(isValid(')'));                        // false
Ответить с цитированием
  #2 (permalink)  
Старый 26.10.2023, 20:04
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,007

function isValid(str) {
  const pairs = {
    '(': ')',
    '{': '}',
    '[': ']'
  };
  const closes = Object.values(pairs);

  const stack = [];

  for (let s of str) {
    if (pairs[s]) {
      stack.push(pairs[s]);
    } else if (closes.includes(s) && s !== stack.pop()) {
      return false;
    }
  }

  return !stack.length;
}
Ответить с цитированием
  #3 (permalink)  
Старый 27.10.2023, 11:54
Аспирант
Отправить личное сообщение для firep91613 Посмотреть профиль Найти все сообщения от firep91613
 
Регистрация: 24.10.2023
Сообщений: 55

Alexandroppolus,
грамотно. Благодарю.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает валидация полей формы Julia1991 Events/DOM/Window 1 22.02.2019 18:34
Как работает код с последовательностью скобок? AndriiS Общие вопросы Javascript 1 19.02.2019 16:18
Валидация E-mail oopros Общие вопросы Javascript 8 24.08.2015 22:05
Валидация: unobtrusive и обычная валидация. Как скрестить? dux1 Элементы интерфейса 2 27.07.2015 08:31
Валидация формы в зависимости от значения radio batton housewm Events/DOM/Window 1 10.01.2014 18:46