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

相關文章
相關標籤/搜索