我看了一些其他帖子,但我仍然对在数组中使用数组感到有些困惑。
所以我创建了如下数组:
var pagesArray = [
{
category: 'pages1',
pages: [
'firstPage1',
'secondPage1',
'thirdPage1',
'fourthPage1'
]
}, {
category: 'pages2',
pages: [
'firstPage2',
'secondPage2',
'thirdPage2',
'fourthPage2'
]
}
];
现在我希望能够搜索数组并查找其中是否存在字符串。如果是,我希望它返回它的位置值。
E.g。
jQuery.inArray('secondPage1', pagesArray)
给出结果:
pagesArray[0][1];
我不确定我是否编写了错误的数组,以及我是否正确使用inArray
。如果我尝试alert(pagesArray[0][1]);
,它会给出一个未定义的值。我在这里做错了什么?
答案 0 :(得分: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]
内的第一个数组['pages']
中找到索引[1
]第二个位置,因为索引从0开始
$.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']));
答案 1 :(得分: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;
}
}
答案 2 :(得分: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'