JSFiddle - React, Tailwind, and code Playground
JavaScript
var brackets = ["()", "[]", "{}"];
function isOpening(b) {
function first(str) {
return str[0];
}
var openingBrackets = brackets.map(first);
return openingBrackets.indexOf(b) !== -1;
}
function isClosing(b) {
function second(str) {
return str[1];
}
var closingBrackets = brackets.map(second);
return closingBrackets.indexOf(b) !== -1;
}
function bracketsMatch(b1, b2) {
return brackets.indexOf(b1 + b2) !== -1;
}
function isBalanced(str) {
var stack = [];
for (var i = 0; i < str.length; ++i) {
var current = str[i];
if (isOpening(current)) {
stack.push(current);
} else if (isClosing(current)) {
var top = stack.pop();
if (typeof(top) === "undefined" || !bracketsMatch(top, current)) {
return false; // bad match or too many closing brackets
}
}
}
return stack.length === 0; // not too many opening brackets
}
console.log(isBalanced("")); // true
console.log(isBalanced("()()")); // true
console.log(isBalanced("{{[]()}}")); // true
console.log(isBalanced("([)]")); // false
console.log(isBalanced("]]")); // false