0

他のいくつかの投稿を見てきましたが、配列内で配列を使用することについてまだ少し混乱しています。

だから私は以下のように私の配列を作成しました:

var pagesArray = [
    {
        category: 'pages1',
        pages: [
            'firstPage1',
            'secondPage1',
            'thirdPage1',
            'fourthPage1'
        ]
    }, {
        category: 'pages2',
        pages: [
            'firstPage2',
            'secondPage2',
            'thirdPage2',
            'fourthPage2'
        ]
    }
];

ここで、配列を検索して、その中に文字列が存在するかどうかを確認できるようにしたいと考えています。もしそうなら、それがどの位置にあるかの値を返したいです。

例えば

jQuery.inArray('secondPage1', pagesArray)

結果を与える:

pagesArray[0][1];

配列を間違って書いたかどうか、inArray正しく使用しているかどうかはわかりません。しようとするalert(pagesArray[0][1]);と、未定義の値が返されます。ここで何が間違っていますか?

4

3 に答える 3

0
function findInArray( arr, value ) {
   var j; 
   for ( var i in arr ) {
      if ( ~( j = arr[ i ].pages.indexOf( value ) ) )
         return { i: +i, j: +j };
   }
}

findInArray( pagesArray, 'thirdPage2' );
>> Object {i: 1, j: 2}

そうですpagesArray[ 1 ].pages[ 2 ]。それで:

var p = findInArray( pagesArray, 'thirdPage2' );
pagesArray[ p.i ].pages[ p.j ];
>> 'thirdPage2'

したがって、値を返すか何も返さないメソッドを記述して、アイテムが存在するかどうかを確認できます。

function findInArray( arr, value ) {
   var j; 
   for ( var i in arr ) {
      if ( ~( j = arr[ i ].pages.indexOf( value ) ) )
         return arr[ i ].pages[ j ];
   }

   return false;
}

findInArray( pagesArray, 'foo ' );
>> false
findInArray( pagesArray, 'fourthPage2' );
>> 'fourthPage2'
于 2013-08-12T11:23:21.650 に答える