Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.02.2019, 15:56
Интересующийся
Отправить личное сообщение для AndriiS Посмотреть профиль Найти все сообщения от AndriiS
 
Регистрация: 05.09.2018
Сообщений: 28

Как работает код с последовательностью скобок?
Здравствуйте!
Нужна помощь в понимании что происходит в коде, который считает количество скобок в строке. На одном сайте приведен и детально разобран код приведенный ниже. Однако например я не могу понять что это такое за объект?
let opening = { '[': ']', '{': '}', '(': ')', '<': '>', };

Я думаю, что это объект у которого ключи типа 'скобка' и значение типа 'встречная скобка'. Странная и непривычная запись.

(1) Могут быть ключи и значения с такими именами?
(2) Как "работает" запись if(opening[c])? Это эквивалентно if(opening[c]) = true?

Буду благодарен за детальное объяснение как работает этот код. :-)

function correctBrackets(brs){
  let opening = {
    '[': ']',
    '{': '}',
    '(': ')',
    '<': '>',
  };

  let open = 0, close = 0;

  for(let i = 0; i < brs.length; i++){
    let c = brs[i];
    if(opening[c]){
      open++;
    } else {
      close++;
    }
  }

  if(open != close){
    return null;
  }

  // Составляем последовательность
}
Ответить с цитированием
  #2 (permalink)  
Старый 19.02.2019, 16:18
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от AndriiS
На одном сайте приведен и детально разобран код приведенный ниже.
Сообщение от AndriiS
Буду благодарен за детальное объяснение как работает этот код
Почему не почитать детальный разбор на том сайте, где этот код приведен?

Сообщение от AndriiS
Могут быть ключи и значения с такими именами?
Как видите могут.

Сообщение от AndriiS
Как "работает" запись if(opening[c])? Это эквивалентно if(opening[c]) = true?
В вашем варианте (который "эквивалентен") синтаксическая ошибка.
Из объекта "opening" берется значение, название которого хранится в переменной "с" (если такого свойства нет, то значением будет "undefined") и приводится к булеву типу.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работает валидация на JavaScript? Griin Общие вопросы Javascript 2 11.06.2017 16:07
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Сортировка - кто пояснит как работает код.. caca0 Javascript под браузер 1 23.05.2012 18:08
Запуск кода с фрейма, код в родительском окне - КАК ? lamer Javascript под браузер 7 06.05.2012 15:15
Код работает не так как задумал. Обработчик onclick prowoke Общие вопросы Javascript 2 20.07.2011 23:31