1

したがって、次のように定義された次の配列があります。

        var a = new Array();
            a[1] = new Array();

            a[1][0] = "Computer Science";
            a[1][1] = "Computer Engineering";
            a[1][2] = "Aerospace Engineering";
            a[1][3] = "Engineering (Other)";
            a[1][4] = "Web Development";
            a[1][5] = "Computer Programming";
            a[1][6] = "Android Development";
                    //a[2] through a[n] defined similarly

ある時点で、文字列が a[i] のどこかに含まれているかどうかをテストしようとしている、たとえば「コンピューター サイエンス」なので、次のようにします。

                 for(j=1; j<n; j++)
                    if("Computer Science" in a[j])
                    {
                              //DO SOMETHING
                    }

ただし、これは常に false を返しますが、a[j] には実際に文字列が含まれていることを確認しました (a[j][0])。なぜこれが起こっているのですか?

4

2 に答える 2

8

in演算子は、プロパティ(名前)がオブジェクトに存在するかどうかをテストするために使用されます。たとえば、"5" in a[j]trueでした-配列にはインデックスがあります5

indexOfこのメソッドを使用して、要素が配列に存在するかどうかを確認します。

if (a[j].indexOf("Computer Science") > -1)
    //DO SOMETHING
于 2012-07-13T08:40:33.510 に答える
0

これは機能します:

var a = [];
a[0] = [];
a[1] = [];

a[1][0] = "Computer Science";
a[1][1] = "Computer Engineering";
a[1][2] = "Aerospace Engineering";
a[1][3] = "Engineering (Other)";
a[1][4] = "Web Development";
a[1][5] = "Computer Programming";
a[1][6] = "Android Development";

for(j=0; j<a.length; j++) {
    if("Computer Science" in oc(a[j])) {
       alert("test");               
    }
}

function oc(a)
{
  var o = {};
  for(var i=0;i<a.length;i++)
  {
    o[a[i]]='';
  }
  return o;
}

http://jsfiddle.net/SRPEU/

于 2012-07-13T08:50:37.823 に答える