<script type="text/javascript">
function matchBrackets(str){
//定义一个空数组,用于存放每遍历到的左括号所对应的右括号
var arr = [];
for(var i = 0;i < str.length;i++){
//value用于存放遍历到的左括号
var value = str[i];
switch(value){
case '(':
//遍历到"(" 向arr末尾追加")"
arr.push(')');
break;
case '[':
arr.push(']');
break;
case '{':
arr.push('}');
break;
default:
//pop 删除数组的最后一个元素,并将该元素作为返回值返回
//当遍历到右括号 判断它和arr的最后一个元素是否相等 相等则匹配 不做处理 不相等则不匹配 返回false
//每遍历到右括号 与arr最后一个元素进行判断后 将arr的最后一个元素删除
if( value != arr.pop()){
return false;
}
}
}
//当arr.length != 0,意味着还存在多余的左括号 没有与之匹配的右括号
if(arr.length != 0){
return false;
}
return true;
}
var str1 = '([[{}]])';
var str2 = '({[}])';
var str3 = '({[]})(';
document.write(matchBrackets(str3));
</script>