js中对括号()[]{}的判断有效函数

最近在找工做,老是被问到像对括号这样的数据,怎么判断它是否有效,写一个方法,判断它是否有效? 因此,今天就写一个贴上吧,我没有考虑什么场景,就是一个基本的实现javascript

function brackets(str) {
    var strArr = str.split('');

    function decide(type) {
        switch(type) {
            case '(':
                return 1;
            case '[':
                return 2;
            case '{':
                return 3;
            case ')':
                return -1;
            case ']':
                return -2;
            case '}':
                return -3;
            default:
                break;
        }
    }

    var arr = [], flag = true;

    strArr.map(item => {
        var num = decide(item);
        
        if (num > 0) {
            arr.push(num);
        } else {
            var prev = arr.pop();
            if (Number(prev + num)) {
                flag = false;
            }
        }
    })
    return flag
}

var str1 = '{{{{}}}([)]}';
var str2 = '{{{{}}}[()]}';
brackets(str1) // 返回false
brackets(str2) // 返回true
复制代码

写这个的主要目的是为了方便往后本身的查看,固然若是某位同窗有更好的看法,也不防告诉我java

相关文章
相关标签/搜索