我看到一个面试问题。(即)我在一个函数中有一个数组
function validate(){
var array=["(","{","[","]","}",")"];
}
我还有一个带提交按钮的输入字段
<body>
<input type="text" name="equation" id="equation">
<input type="submit" name="check" value="check" onclick="validate();">
</body>
现在我的疑问是,当我输入数据为{()}
时,它应该在警报中显示有效数据。当我输入像{()}]
这样的输入数据时,它应该显示为无效数据。这意味着输入不平衡它应显示invalid
消息。为此我需要比较数组中的数组元素。
如何做?
答案 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(']'));