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

1

更新的演示

$.each(pagesArray, function (i, v) {
    if((pos=$.inArray('secondPage1', pagesArray[i]['pages'])) !== -1){
        console.log('pagesArray['+i+"]['pages']"+'['+pos+']');
    };
});

输出pagesArray[0]['pages'][1]

pagesArray[0]在第一个数组中找到的[0] 0意思是指第一个

pagesArray[0]['pages'][1]在索引 [ ] 处的[0]子数组内的第一个数组中找到第二个位置,因为索引从 0 开始['pages']1

演示

$.each(pagesArray, function (i, v) {
    if($.inArray('secondPage1', pagesArray[i]['pages']) !== -1){
        alert('inarray');
    };
});

访问类别

console.log(pagesArray[1]['category']);

访问页面

console.log(pagesArray[1]['pages']);

要在数组中查找值,您可以使用

console.log($.inArray('secondPage1', pagesArray[0]['pages']));
于 2013-08-12T11:17:56.180 回答
0

试试这个:

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

for(var i = 0; i < pagesArray.length; i++)
{
    var exist = jQuery.inArray("firstPage2", pagesArray[i]);
    if(exist)
    {
        alert('Got the Value!!!!');
        break;
    }
}

小提琴

于 2013-08-12T11:20:24.710 回答
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 回答