Javascript数组比较

时间:2017-01-11 09:27:06

标签: javascript

我看到一个面试问题。(即)我在一个函数中有一个数组

function validate(){
    var array=["(","{","[","]","}",")"];
 }

我还有一个带提交按钮的输入字段

<body>
<input type="text" name="equation" id="equation">
<input type="submit" name="check" value="check" onclick="validate();">
</body>

现在我的疑问是,当我输入数据为{()}时,它应该在警报中显示有效数据。当我输入像{()}]这样的输入数据时,它应该显示为无效数据。这意味着输入不平衡它应显示invalid消息。为此我需要比较数组中的数组元素。

如何做?

1 个答案:

答案 0 :(得分:1)

如果找到了corespondent括号,您可以保存打开的括号并删除最后一个。最后,检查open括号数组是否为空。

function validate(s) {
    var open = [],
        brackets = { '(': 1, '{': 2, '[': 3, ']': -3, '}': -2, ')': -1 };

    return s.split('').every(function (a) {
        if (!brackets[a]) {
           return true;
        }
        if (brackets[a] > 0) {
            open.push(-brackets[a]);
            return true;
        }
        if (open[open.length - 1] ===  brackets[a] ) {
            open.pop();
            return true;
        }
    }) && open.length === 0;
 }

console.log(validate('([()()])'));
console.log(validate('(a+2)*4'));
console.log(validate(']'));