Есть строка:
var stroka = "Mazda ]RX707[ - )легковой автомобиль( }повышенного комфорта{"
Нам нужно перевернуть скобки, чтобы они смотрели в другую сторону. У нас в строке встречаются круглые, квадратные и фигурные скобки. Их нужно отзеркалить. Как это сделать?
Способ № 1 — при помощи переключателя switch, метода map и метода join
При любых раскладах нам сначала нужно раскидать каждый символ строки на отдельное значение элемента массива. Сделать это можно двумя способами:
[...stroka] или Array.from(stroka)
Эти вызовы вернут нам массив вида:
["M", "a", "z", "d", "a", " ", "]", "R", "X", "7", "0", "7", "[", " ", "-", " ", ")", "л", "е", "г", "к", "о", "в", "о", "й", " ", "а", "в", "т", "о", "м", "о", "б", "и", "л", "ь", "(", " ", " ", "}", "п", "о", "в", "ы", "ш", "е", "н", "н", "о", "г", "о", " ", "к", "о", "м", "ф", "о", "р", "т", "а", "{"]
Скрины из консоли браузера:


Нам в любом случае нужно получить массив из отдельных символов всей строки, чтобы при последовательном обходе в нужных местах производить замены. Для обхода мы будем использовать метод map()
.
Мы будем прогонять каждый элемент массива через функцию с переключателем. В функцию будет передаваться один символ.
switch (i) { case '(': return ')'; case ')': return '('; case '[': return ']'; case ']': return '['; case '{': return '}'; case '}': return '{'; default: return i; }
Это может выглядеть так:
[...stroka].map(i=>{switch (i) { case '(': return ')'; case ')': return '('; case '[': return ']'; case ']': return '['; case '{': return '}'; case '}': return '{'; default: return i; }}).join("")
Но для красоты можно заранее подготовить функцию mirror_brackets(), чтобы внутри неё разместить всю логику замен.
function mirror_brackets(i) { switch (i) { case '(': return ')'; case ')': return '('; case '[': return ']'; case ']': return '['; case '{': return '}'; case '}': return '{'; default: return i; } }
Мы просто прописываем случаи, при которых нужно возвращать отзеркаленные значения скобок.

Выражение с методом map()
будет выглядеть так:
[...stroka].map(mirror_brackets).join("") "Mazda [RX707] - (легковой автомобиль) {повышенного комфорта}"
Скрин:

Способ № 2 — при помощи массива и цикла
Функция отзеркаливания скобок в строке
function reverseBrackets (str){ for(arr=[...str], newarr=[], i=0; i<arr.length; i++){ if(arr[i]=="["){newarr.push("]")} else if(arr[i]=="]"){newarr.push("[")} else if(arr[i]=="("){newarr.push(")")} else if(arr[i]==")"){newarr.push("(")} else if(arr[i]=="{"){newarr.push("}")} else if(arr[i]=="}"){newarr.push("{")} else{newarr.push(arr[i])} } return newarr.join("") }
Функция превращает строку в массив и по каждому элементу делает проверку на наличие скобок. Если на текущей позиции счётчика нет скобки, тогда такой элемент просто добавляется в новый массив без изменений. Если есть какая-либо скобка, тогда она переворачивается и в новый массив возвращается перевёрнутая версия скобки.
Пример работы функции

Информационные ссылки
Стандарт ECMAScript — Раздел «14.12 The switch Statement» — https://tc39.es/ecma262/#sec-switch-statement
Стандарт ECMAScript — Раздел «14.7.4 The for Statement» — https://tc39.es/ecma262/#sec-for-statement