2011-06-19 7 views
0
openList = Array([1,1], [2,3], [4,5]); 
containss = function (input, arrayData, tellID) { 
    for (i = 0; i < arrayData.length; i++) { 
     if (arrayData[i] == input) { 
      if (tellID) { 
       return i; 
      } else { 
       return true; 
      } 
     } 
    } 
    return false; 
} 
trace(containss([2,3], openList, true)); 

このコードは、openListに2,3が含まれているとfalseを返します。トレース(arrayData [i])を追加すると1,1,2,3,4,5が得られ、トレース(入力)を行うと2,3が得られます。なにが問題ですか?おかげ配列に何かが含まれているかどうかを調べる関数を作成する

あなたが等しい演算子を使用して2つの配列を比較している

答えて

0

arrayData[i]==input

これは常にfalseとなり、どんなに配列の内容。あなたのケースの等価演算子は、arraydata[i]が同じオブジェクトであるかどうかをテストします。inputでは、2つの異なるオブジェクト(配列)が同じ内容を持っていないとします。

+0

私は代わりに何を使用しますか?私は===を試みたが、それはあまりにも誤っている。 – apscience

+1

配列が同じ順序で同じ要素を持たなければならない場合は、array1.toString()== array2.toString() –

+0

の順序が重要ではなく、配列にはあなたはそのためのカスタム関数を書かなければならないかもしれません –

関連する問題