JavaScript .push到空数组不起作用



我正在尝试求解有效的括号,如标题所述,我不知道如何在此上下文中使用Array.push

function isValidPar(par){
  var stack = [];
  var length = par.length;
  
  for (var i=0; i<length; i++) {
    var p = par[i];
    if(p === "(" || p === "{" || p === "[") {
      stack.push(p);
    } else if(p === ")") {
        if(stack.length === 0 || stack[stack.length-1] != "(") {return false}
          stack.pop();
      } else if(p === "]") {
          if(stack.length === 0 || stack[stack.length-1] != "[") {return false}
            stack.pop();
      } else if(p === "}") {
          if(stack.length === 0 || stack[stack.length-1] != "{") {return false}
            stack.pop();
    } return stack.length === 0;
  }
}

如果我在stack.push()之后立即进行console.log,则显示我刚插入的元素。但是,当我在其他任何地方(例如else if语句或return之前)尝试它时,似乎数组是空的。

这是您的代码的更正版本

function isValidPar(par){
  var stack = [];
  var length = par.length;
  
  for (var i=0; i<length; i++) {
    var p = par[i];
    if(p === "(" || p === "{" || p === "[") {
      stack.push(p);
    } else if(p === ")") {
        if(stack.length === 0 || stack[stack.length-1] != "(") {return false}
          stack.pop();
      } else if(p === "]") {
          if(stack.length === 0 || stack[stack.length-1] != "[") {return false}
            stack.pop();
      } else if(p === "}") {
          if(stack.length === 0 || stack[stack.length-1] != "{") {return false}
            stack.pop();
    } 
  }
  return stack.length === 0;
}
console.log(isValidPar('(())'));

return stack.length === 0;

应检查一旦for循环完成

最新更新