2017-01-11 21 views
0

私は1つの面接の質問を見ました。(IE)
私は、関数の内部JavaScriptの配列の比較

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

を1つの配列を持っても私は1つの入力フィールドを持っているボタン

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

今私の疑いがある提出入力データを{()}と入力すると有効なデータがアラートに表示されます。{()}]のような入力データを入力すると無効なデータとして表示されます。アンバランス入力の場合はinvalidメッセージが表示されます。 d配列内の配列要素を比較します。

どのようにするには?

+1

あなたは何をしようとしたのですか? – baao

+0

これは明らかではありません。関数 'validate'は何をすべきですか?何を試しましたか? – Weedoze

+0

'var a = document.getElementById( 'equation')。値; var y = eval(a); 警告( "あなたの答えは+ y); '
私はちょうどeval.Butを使用してみましたが、これは私の質問ではありません私は配列の値が不均衡な記号を比較する必要があります。 – user7397787

答えて

1

開いている括弧を保存し、括弧内の括弧が見つかると最後の括弧を削除できます。最後に、開いている括弧の配列が空であるかどうかを確認します。

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(']'));