[英]Jquery, using “inarray” on a nested array to find a specific value's index?
我正在努力解决这个问题,我仍然是javascript的新手,我正在尝试jquery $ .inarray函数,因为我需要能够在数组中找到一个值,以便我可以从同一个数组“line”返回其他值,比如它的ID。
当我尝试使用jquery的inarray函数时,就像这样,我只是回到-1,说当我知道值存在时它不存在,嵌套在数组中..我不知道如何处理这个我可以搜索一个值,任何建议都非常感谢。
valuereturn = $.inArray("search_for_value", jsonarray) ;
alert (valuereturn)
编辑2:
这是我从cakephp回复JSON的结果:
{"getdata":[{"Uiemail":{"uiemail_id":"2","divid":"upd1","width":"200","height":"200","leftpos":"122","toppos":"122","cssgroup":"1","colortop":"","colorbottom":"","colorborder":"","borderwidth":"","zindex":""}},
{"Uiemail":{"uiemail_id":"3","divid":"upd2","width":"200","height":"200","leftpos":"333","toppos":"444","cssgroup":"1","colortop":"","colorbottom":"","colorborder":"","borderwidth":"","zindex":""}},
{"Uiemail":{"uiemail_id":"4","divid":"upd3","width":"200","height":"200","leftpos":"555","toppos":"466","cssgroup":"1","colortop":"","colorbottom":"","colorborder":"","borderwidth":"","zindex":""}}]}
编辑:
另外,这是输出:
alert(typeof jsonarray+'\n'+jsonarray.length)
output= "object 3 "
我也尝试了这个,但它没有给出值并在我的页面上出错:
alert(jsonararray)
我仍然不完全确定你在问什么,所以这里有一些假设和一个快速的解决方案。
uiemail_id
divid
的值 现在抛出一点递归函数:
function deepsearch ( blob, val ) {
var result = false;
for( var item in blob ) {
if( typeof blob[item] === 'object' ) {
result = deepsearch( blob[item], val );
if( result != false ) return result;
} else if( blob[item] == val && item == 'uiemail_id' ) {
// found item, blob = obj in which found
result = blob.divid; // the divid from this "line"
break; // assume first found wins
}
}
return result;
}
填写您的确切JSON:
var arr = {"getdata":[{"Uiemail":...
现在,我们可以找一个uiemail_id
的4
,并获得相应的divid
的upd3
:
deepsearch( arr, '4'); // returns upd3
deepsearch( arr, '3'); // returns upd2
这可能是脆弱的,当然可以改进,但也许它会给你一个攻击角度。
好吧,现在我已经决定使用一种在javascript中展平数组的方法并预处理数据,因为我无法弄清楚如何在javascript中进行...我发现了这个:
这应该让我继续过去这个问题但我感兴趣,如果有人知道如何完成我想直接在javascript(在嵌套数组内搜索)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.